﻿Imports WSEntidades
Imports System.Xml

Public Class ValidaAddendas
    ''' <summary>
    ''' Funcion principal que genera la addenda en base al nombre de la addenda
    ''' </summary>
    ''' <param name="nombreAddenda">Nombre de la addenda</param>
    ''' <returns>La addenda en string,nothing en caso de una excepcion</returns>
    ''' <remarks></remarks>
    Public Function generaAddenda(ByVal nombreAddenda As String, ByVal structAddenda As List(Of Addenda_BE), _
                                  ByRef Resp As List(Of RespuestaPremium)) As String
        Dim addenda As String = ""
        Try
            If (nombreAddenda Is Nothing Or structAddenda Is Nothing) Then

                Throw New Exception("No se aceptan valores vacios para la generación de addendas.")
            Else
                Select Case nombreAddenda
                    Case "ZARP"
                        Dim zarp As Zarp = New Zarp()
                        zarp.Estructura = structAddenda
                        addenda = zarp.generaAddenda(Resp)
                    Case "SERVICIO"
                        Dim servicio = New Servicio()
                        servicio.Estructura = structAddenda
                        addenda = servicio.generaAddenda(Resp)
                    Case "REST"
                        Dim rest = New Rest()
                        rest.Estructura = structAddenda
                        addenda = rest.generaAddenda(Resp)
                    Case "DOCU"
                        Dim docu As Docu = New Docu()
                        docu.Estructura = structAddenda
                        addenda = docu.generaAddenda(Resp)
                    Case "CARTAPORTE"
                        Dim carta As New CartaPorte()
                        carta.Estructura = structAddenda
                        addenda = carta.generaAddenda(Resp)
                    Case "CABLES"
                        Dim cables As Cables = New Cables()
                        cables.Estructura = structAddenda
                        addenda = cables.generaAddenda(Resp)
                    Case "ACUARIO"
                        Dim acuario As Acuario = New Acuario()
                        acuario.Estructura = structAddenda
                        addenda = acuario.generaAddenda(Resp)
                    Case "RAFAGAS"
                        Dim rafagas As Rafagas = New Rafagas()
                        rafagas.Estructura = structAddenda
                        addenda = rafagas.generaAddenda(Resp)
                    Case "CFD"
                        Dim cfd As Cfd = New Cfd()
                        cfd.Estructura = structAddenda
                        addenda = cfd.generaAddenda(Resp)
                    Case "MICROSIP2000"
                        Dim Microsip As Microsip2000 = New Microsip2000()
                        Microsip.Estructura = structAddenda
                        addenda = Microsip.generaAddenda(Resp)
                    Case "GASCRISTOBAL"
                        Dim Gascristobal As GasCristobal = New GasCristobal()
                        Gascristobal.Estructura = structAddenda
                        addenda = Gascristobal.generaAddenda(Resp)
                    Case "ACOCOTA"
                        Dim Acocota As Acocota = New Acocota()
                        Acocota.Estructura = structAddenda
                        addenda = Acocota.generaAddenda(Resp)
                    Case "ADDENDA724"
                        Dim Addenda724 As Addenda724 = New Addenda724()
                        Addenda724.Estructura = structAddenda
                        addenda = Addenda724.generaAddenda(Resp)
                    Case "ANAHUAC"
                        Dim Anahuac As Anahuac = New Anahuac()
                        Anahuac.Estructura = structAddenda
                        addenda = Anahuac.generaAddenda(Resp)
                    Case "PLASTICDESIGNS"
                        Dim PlasticDesigns As PlasticDesigns = New PlasticDesigns()
                        PlasticDesigns.Estructura = structAddenda
                        addenda = PlasticDesigns.generaAddenda(Resp)
                    Case "TRACTOCAMIONERA"
                        Dim Tractocamionera As Tractocamionera = New Tractocamionera()
                        Tractocamionera.Estructura = structAddenda
                        addenda = Tractocamionera.generaAddenda(Resp)
                    Case "LIBRADO"
                        Dim Librado As Librado = New Librado()
                        Librado.Estructura = structAddenda
                        addenda = Librado.generaAddenda(Resp)
                    Case "ROLANS"
                        Dim Rolans As Rolans = New Rolans()
                        Rolans.Estructura = structAddenda
                        addenda = Rolans.generaAddenda(Resp)
                    Case "DIKYSA"
                        Dim Dikysa As Dikysa = New Dikysa()
                        Dikysa.Estructura = structAddenda
                        addenda = Dikysa.generaAddenda(Resp)
                    Case "ENERGETICO"
                        Dim Energetico As Energetico = New Energetico()
                        Energetico.Estructura = structAddenda
                        addenda = Energetico.generaAddenda(Resp)
                        'Case "MASFACTURA"
                        '    Dim MasFactura As Masfactura = New Masfactura()
                        '    MasFactura.Estructura = structAddenda
                        '    addenda = MasFactura.generaAddenda(Resp)
                    Case "ATCAGRO"
                        Dim atcagro As Atcagro = New Atcagro()
                        atcagro.Estructura = structAddenda
                        addenda = atcagro.generaAddenda(Resp)
                    Case "CHOLULTECA"
                        Dim cholulteca As Cholulteca = New Cholulteca()
                        cholulteca.Estructura = structAddenda
                        addenda = cholulteca.generaAddenda(Resp)
                    Case "GERTRUDIS"
                        Dim gertrudis As Gertrudis = New Gertrudis()
                        gertrudis.Estructura = structAddenda
                        addenda = gertrudis.generaAddenda(Resp)
                    Case "VIAUNOM"
                        Dim viaunom As Viaunom = New Viaunom()
                        viaunom.Estructura = structAddenda
                        addenda = viaunom.generaAddenda(Resp)
                    Case "VIAUNOS"
                        Dim viaunos As Viaunos = New Viaunos()
                        viaunos.Estructura = structAddenda
                        addenda = viaunos.generaAddenda(Resp)
                    Case "ITALIANA"
                        Dim italiana As Italiana = New Italiana()
                        italiana.Estructura = structAddenda
                        addenda = italiana.generaAddenda(Resp)
                    Case "TAPIA"
                        Dim Tapia As Tapia = New Tapia()
                        Tapia.Estructura = structAddenda
                        addenda = Tapia.generaAddenda(Resp)
                    Case "AUTOMOVER"
                        Dim Automover As Automover = New Automover()
                        Automover.Estructura = structAddenda
                        addenda = Automover.generaAddenda(Resp)
                    Case "CFDI"
                        Dim Cfdi As Cfdi = New Cfdi()
                        Cfdi.Estructura = structAddenda
                        addenda = Cfdi.generaAddenda(Resp)
                    Case "DIS"
                        Dim Dis As Dis = New Dis()
                        Dis.Estructura = structAddenda
                        addenda = Dis.generaAddenda(Resp)
                    Case "CPTAL"
                        Dim Cptal As Cptal = New Cptal()
                        Cptal.Estructura = structAddenda
                        addenda = Cptal.generaAddenda(Resp)
                    Case "LAROCHELLE"
                        Dim Larochelle As Larochelle = New Larochelle()
                        Larochelle.Estructura = structAddenda
                        addenda = Larochelle.generaAddenda(Resp)
                    Case "STAKUJUT"
                        Dim Stakujut As Stakujut = New Stakujut()
                        Stakujut.Estructura = structAddenda
                        addenda = Stakujut.generaAddenda(Resp)
                    Case "SNP"
                        Dim Snp As Snp = New Snp()
                        Snp.Estructura = structAddenda
                        addenda = Snp.generaAddenda(Resp)
                    Case "ADDESC"
                        Dim Addesc As Addesc = New Addesc()
                        Addesc.Estructura = structAddenda
                        addenda = Addesc.generaAddenda(Resp)
                    Case "TELENO"
                        Dim Teleno As Teleno = New Teleno()
                        Teleno.Estructura = structAddenda
                        addenda = Teleno.generaAddenda(Resp)
                    Case "PROVSAP"
                        Dim Provsap As Provsap = New Provsap()
                        Provsap.Estructura = structAddenda
                        addenda = Provsap.generaAddenda(Resp)
                    Case "GGM"
                        Dim Ggm As Ggm = New Ggm()
                        Ggm.Estructura = structAddenda
                        addenda = Ggm.generaAddenda(Resp)
                    Case "SIH"
                        Dim Sih As Sih = New Sih()
                        Sih.Estructura = structAddenda
                        addenda = Sih.generaAddenda(Resp)
                    Case "MOCAMBO"
                        Dim Mocambo As Mocambo = New Mocambo()
                        Mocambo.Estructura = structAddenda
                        addenda = Mocambo.generaAddenda(Resp)
                    Case "IDENTCO"
                        Dim Identco As Identco = New Identco()
                        Identco.Estructura = structAddenda
                        addenda = Identco.generaAddenda(Resp)
                    Case "ANGELES"
                        Dim Angeles As Angeles = New Angeles()
                        Angeles.Estructura = structAddenda
                        addenda = Angeles.generaAddenda(Resp)
                    Case "AUTOLUCA"
                        Dim Autoluca As Autoluca = New Autoluca()
                        Autoluca.Estructura = structAddenda
                        addenda = Autoluca.generaAddenda(Resp)
                    Case "SUMINISTROS"
                        Dim Suministros As Suministros = New Suministros()
                        Suministros.Estructura = structAddenda
                        addenda = Suministros.generaAddenda(Resp)
                    Case "AUTOLUCADIS"
                        Dim Autolucadis As Autolucadis = New Autolucadis()
                        Autolucadis.Estructura = structAddenda
                        addenda = Autolucadis.generaAddenda(Resp)
                    Case "FITONAT"
                        Dim Fitonat As Fitonat = New Fitonat()
                        Fitonat.Estructura = structAddenda
                        addenda = Fitonat.generaAddenda(Resp)
                    Case "NUEVOHOTEL"
                        Dim NuevoHotel As NuevoHotel = New NuevoHotel()
                        NuevoHotel.Estructura = structAddenda
                        addenda = NuevoHotel.generaAddenda(Resp)
                    Case "JYQ"
                        Dim Jyq As Jyq = New Jyq()
                        Jyq.Estructura = structAddenda
                        addenda = Jyq.generaAddenda(Resp)
                    Case "CREADI"
                        Dim Creadi As Creadi = New Creadi()
                        Creadi.Estructura = structAddenda
                        addenda = Creadi.generaAddenda(Resp)
                    Case "CAUDA"
                        Dim Cauda As Cauda = New Cauda()
                        Cauda.Estructura = structAddenda
                        addenda = Cauda.generaAddenda(Resp)
                    Case "POWERSTAR"
                        Dim PowerStar As PowerStar = New PowerStar()
                        PowerStar.Estructura = structAddenda
                        addenda = PowerStar.generaAddenda(Resp)
                    Case "LANTANA"
                        Dim Lantana As Lantana = New Lantana()
                        Lantana.Estructura = structAddenda
                        addenda = Lantana.generaAddenda(Resp)
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "La Addenda solicitada no existe", Resp)
                End Select
            End If

            Return addenda
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, ex.Message, Resp)
            Return Nothing
        End Try
    End Function
    ' ''' <summary>
    ' ''' Hebert Ricardo Peña Serna
    ' ''' Método que procesa la Addenda que se va a generar en el PDF
    ' ''' </summary>
    ' ''' <param name="nombreRpt">Nombre del reporte a ser utilizado por esa addenda</param>
    ' ''' <param name="node">Nodo que contiene la addenda a procesar</param>
    ' ''' <param name="respuesta">Valor para uso genérico en caso de requerir alguna operacion adicional</param>
    ' ''' <returns>una Lista de Addenda_BE, en caso de error Nothing</returns>
    ' ''' <remarks></remarks>
    'Public Function procesaAddenda(ByRef nombreRpt As String, ByVal node As Xml.XmlNode, ByVal respuesta As Boolean, _
    '                               ByVal version As String) As List(Of Addenda_BE)

    '    Dim add As List(Of Addenda_BE) = New List(Of AddendaBE)()

    '    Try


    '        If (node.Name = "Zarp") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Zarp.rpt"
    '            If Not (node.Attributes.ItemOf("ProyectoSap") Is Nothing) Then
    '                addenda.Atributo = "ProyectoSap"
    '                addenda.Valor = node.Attributes.ItemOf("ProyectoSap").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)

    '            End If
    '            If Not (node.Attributes.ItemOf("Proyecto") Is Nothing) Then
    '                addenda2.Atributo = "Proyecto"
    '                addenda2.Valor = node.Attributes.ItemOf("Proyecto").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("OrdenCompra") Is Nothing) Then
    '                addenda3.Atributo = "OdernCompra"
    '                addenda3.Valor = node.Attributes.ItemOf("OrdenCompra").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Clave") Is Nothing) Then
    '                addenda4.Atributo = "Clave"
    '                addenda4.Valor = node.Attributes.ItemOf("Clave").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Contrato") Is Nothing) Then
    '                addenda5.Atributo = "Contrato"
    '                addenda5.Valor = node.Attributes.ItemOf("Contrato").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("FacturasRetenidas") Is Nothing) Then
    '                addenda6.Atributo = "FacturasRetenidas"
    '                addenda6.Valor = node.Attributes.ItemOf("FacturasRetenidas").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If

    '        ElseIf (node.Name = "SERVICIO") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            nombreRpt = "cfdiCarta_Servicio.rpt"
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value

    '                If Not (nodin.Attributes.ItemOf("Descripcion") Is Nothing) Then
    '                    addenda.Atributo = "Descripcion"
    '                    addenda.Valor = nodin.Attributes.ItemOf("Descripcion").Value
    '                    addenda.Nivel = "2"
    '                    addenda.Partida = contador
    '                    add.Add(addenda)
    '                    addenda = New AddendaBE()
    '                Else
    '                    addenda.Valor = ""
    '                    addenda.Nivel = "2"
    '                    addenda.Partida = contador
    '                    add.Add(addenda)
    '                    addenda = New AddendaBE()
    '                End If


    '                If Not (nodin.Attributes.ItemOf("Matricula") Is Nothing) Then
    '                    addenda.Atributo = "Matricula"
    '                    addenda.Valor = nodin.Attributes.ItemOf("Matricula").Value
    '                    addenda.Nivel = "2"
    '                    addenda.Partida = contador
    '                    add.Add(addenda)
    '                    addenda = New AddendaBE()
    '                Else
    '                    addenda.Valor = ""
    '                    addenda.Nivel = "2"
    '                    addenda.Partida = contador
    '                    add.Add(addenda)
    '                    addenda = New AddendaBE()
    '                End If


    '                If Not (nodin.Attributes.ItemOf("NoEconomico") Is Nothing) Then
    '                    addenda.Atributo = "NoEconomico"
    '                    addenda.Valor = nodin.Attributes.ItemOf("NoEconomico").Value
    '                    addenda.Nivel = "2"
    '                    addenda.Partida = contador
    '                    add.Add(addenda)
    '                    addenda = New AddendaBE()
    '                Else
    '                    addenda.Valor = ""
    '                    addenda.Nivel = "2"
    '                    addenda.Partida = contador
    '                    add.Add(addenda)
    '                    addenda = New AddendaBE()
    '                End If


    '                If Not (nodin.Attributes.ItemOf("Km") Is Nothing) Then
    '                    addenda.Atributo = "Km"
    '                    addenda.Valor = nodin.Attributes.ItemOf("Km").Value
    '                    addenda.Nivel = "2"
    '                    addenda.Partida = contador
    '                    add.Add(addenda)
    '                    addenda = New AddendaBE()
    '                Else
    '                    addenda.Valor = ""
    '                    addenda.Nivel = "2"
    '                    addenda.Partida = contador
    '                    add.Add(addenda)
    '                    addenda = New AddendaBE()
    '                End If

    '                If Not (nodin.Attributes.ItemOf("NombreChofer") Is Nothing) Then
    '                    addenda.Atributo = "NombreChofer"
    '                    addenda.Valor = nodin.Attributes.ItemOf("NombreChofer").Value
    '                    addenda.Nivel = "2"
    '                    addenda.Partida = contador
    '                    add.Add(addenda)
    '                    addenda = New AddendaBE()
    '                Else
    '                    addenda.Valor = ""
    '                    addenda.Nivel = "2"
    '                    addenda.Partida = contador
    '                    add.Add(addenda)
    '                    addenda = New AddendaBE()
    '                End If

    '            Next

    '        ElseIf (node.Name = "Docu") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Docu.rpt"
    '            If Not (node.Attributes.ItemOf("Tel") Is Nothing) Then
    '                addenda.Atributo = "Tel"
    '                addenda.Valor = node.Attributes.ItemOf("Tel").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)

    '            End If
    '            If Not (node.Attributes.ItemOf("NoCuenta") Is Nothing) Then
    '                addenda2.Atributo = "NoCuenta"
    '                addenda2.Valor = node.Attributes.ItemOf("NoCuenta").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Vendedor") Is Nothing) Then
    '                addenda3.Atributo = "Vendedor"
    '                addenda3.Valor = node.Attributes.ItemOf("Vendedor").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("NoFactura") Is Nothing) Then
    '                addenda4.Atributo = "NoFactura"
    '                addenda4.Valor = node.Attributes.ItemOf("NoFactura").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If

    '        ElseIf (node.Name = "Cables") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Cables.rpt"
    '            If Not (node.Attributes.ItemOf("Facturado") Is Nothing) Then
    '                addenda.Atributo = "Facturado"
    '                addenda.Valor = node.Attributes.ItemOf("Facturado").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)

    '            End If
    '            If Not (node.Attributes.ItemOf("Proveedor") Is Nothing) Then
    '                addenda2.Atributo = "Proveedor"
    '                addenda2.Valor = node.Attributes.ItemOf("Proveedor").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Pedido") Is Nothing) Then
    '                addenda3.Atributo = "Pedido"
    '                addenda3.Valor = node.Attributes.ItemOf("Pedido").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If

    '        ElseIf (node.Name = "Acuario") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Acuario.rpt"
    '            If Not (node.Attributes.ItemOf("Notas") Is Nothing) Then
    '                addenda.Atributo = "Notas"
    '                addenda.Valor = node.Attributes.ItemOf("Notas").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "Rafagas") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Rafagas.rpt"
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda.Atributo = "Observaciones"
    '                addenda.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "Cfd") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            nombreRpt = "rptCFD2_Addenda.rpt"
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda.Atributo = "Observaciones"
    '                addenda.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "Microsip2000") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Microsip2000.rpt"
    '            If Not (node.Attributes.ItemOf("Subtotaltasa0") Is Nothing) Then
    '                addenda.Atributo = "Subtotaltasa0"
    '                addenda.Valor = node.Attributes.ItemOf("Subtotaltasa0").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Subtotaltasa16") Is Nothing) Then
    '                addenda2.Atributo = "Subtotaltasa16"
    '                addenda2.Valor = node.Attributes.ItemOf("Subtotaltasa16").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If

    '        ElseIf (node.Name = "requestForPayment") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim BanBod As Boolean = False
    '            Dim Bodega As String = ""
    '            Dim Numero As String = ""
    '            nombreRpt = "cfdiCarta_Coppel_Ropa.rpt"
    '            If (node.ChildNodes(3).ChildNodes(1) IsNot Nothing) Then
    '                If Not (node.ChildNodes(3).ChildNodes(1).ChildNodes(4) Is Nothing) Then
    '                    Select Case node.ChildNodes(3).ChildNodes(1).ChildNodes(4).InnerText
    '                        Case "1"
    '                            Bodega = "Culiacán"
    '                            Numero = "1"
    '                        Case "2"
    '                            Bodega = "León"
    '                            Numero = "2"
    '                        Case "3"
    '                            Bodega = "Laguna"
    '                            Numero = "3"
    '                        Case "4"
    '                            Bodega = "Mexicali"
    '                            Numero = "4"
    '                        Case "5"
    '                            Bodega = "Nogales"
    '                            Numero = "5"
    '                        Case "6"
    '                            Bodega = "Monterrey"
    '                            Numero = "6"
    '                        Case "7"
    '                            Bodega = "Guadalajara"
    '                            Numero = "7"
    '                        Case "8"
    '                            Bodega = "Azcapotzalco"
    '                            Numero = "8"
    '                        Case "9"
    '                            Bodega = "Nvo. Laredo"
    '                            Numero = "9"
    '                        Case "10"
    '                            Bodega = "Juarez"
    '                            Numero = "10"
    '                        Case "11"
    '                            Bodega = "Hermosillo"
    '                            Numero = "11"
    '                        Case "12"
    '                            Bodega = "Puebla"
    '                            Numero = "12"
    '                        Case "13"
    '                            Bodega = "Villahermosa"
    '                            Numero = "13"
    '                        Case "14"
    '                            Bodega = "La Paz"
    '                            Numero = "14"
    '                        Case "15"
    '                            Bodega = "Iztapalapa"
    '                            Numero = "15"
    '                        Case "16"
    '                            Bodega = "Izcalli"
    '                            Numero = "16"
    '                        Case "17"
    '                            Bodega = "Cancun"
    '                            Numero = "17"
    '                        Case "18"
    '                            Bodega = "Ixtapaluca"
    '                            Numero = "18"
    '                        Case "20"
    '                            Bodega = "Los Mochis"
    '                            Numero = "20"
    '                        Case "21"
    '                            Bodega = "Distrito Federal"
    '                            Numero = "21"
    '                        Case "22"
    '                            Bodega = "Veracruz"
    '                            Numero = "22"
    '                        Case "24"
    '                            Bodega = "Merida"
    '                            Numero = "24"
    '                        Case "25"
    '                            Bodega = "San Pedro Tlaquepaque"
    '                            Numero = "25"
    '                        Case Else
    '                            Bodega = node.ChildNodes(3).ChildNodes(1).ChildNodes(4).InnerText
    '                            Numero = ""
    '                    End Select
    '                    addenda2.Atributo = "Numero"
    '                    addenda2.Valor = Numero
    '                    addenda2.Nivel = "1"
    '                    addenda2.Partida = "0"
    '                    add.Add(addenda2)
    '                Else
    '                    addenda2.Valor = ""
    '                    addenda2.Nivel = "1"
    '                    add.Add(addenda2)
    '                End If
    '                If Not (node.ChildNodes(3).ChildNodes(1).ChildNodes(0) Is Nothing) Then
    '                    addenda.Atributo = "Bodega"
    '                    addenda.Valor = Bodega
    '                    addenda.Nivel = "1"
    '                    addenda.Partida = "0"
    '                    add.Add(addenda)
    '                Else
    '                    addenda.Valor = ""
    '                    addenda.Nivel = "1"
    '                    add.Add(addenda)
    '                End If


    '                If Not (node.ChildNodes(1).ChildNodes(0) Is Nothing) Then
    '                    addenda4.Atributo = "Pedido"
    '                    addenda4.Valor = node.ChildNodes(1).ChildNodes(0).InnerText
    '                    addenda4.Nivel = "1"
    '                    addenda4.Partida = "0"
    '                    add.Add(addenda4)
    '                Else
    '                    addenda4.Valor = ""
    '                    addenda4.Nivel = "1"
    '                    add.Add(addenda4)
    '                End If

    '                If Not (node.ChildNodes(5).ChildNodes(0) Is Nothing) Then
    '                    addenda5.Atributo = "Total Cajas"
    '                    addenda5.Valor = node.ChildNodes(5).ChildNodes(0).InnerText
    '                    addenda5.Nivel = "1"
    '                    addenda5.Partida = "0"
    '                    add.Add(addenda5)
    '                Else
    '                    addenda5.Valor = ""
    '                    addenda5.Nivel = "1"
    '                    add.Add(addenda5)
    '                End If

    '                Dim contador As Integer = 1
    '                Dim contadornodo As Integer = 0
    '                For Each nodin As XmlNode In node.ChildNodes
    '                    If (nodin.Name = "lineItem") Then
    '                        contador = nodin.Attributes("number").Value

    '                        If Not (nodin.ChildNodes(2).ChildNodes(0) Is Nothing) Then
    '                            addenda3.Atributo = "Modelo"
    '                            addenda3.Valor = nodin.ChildNodes(2).ChildNodes(0).InnerText
    '                            addenda3.Nivel = "2"
    '                            addenda3.Partida = contador
    '                            add.Add(addenda3)
    '                            addenda3 = New AddendaBE()
    '                        Else
    '                            addenda3.Valor = ""
    '                            addenda3.Nivel = "2"
    '                            addenda3.Partida = contador
    '                            add.Add(addenda3)
    '                            addenda3 = New AddendaBE()
    '                        End If


    '                        If Not (nodin.ChildNodes(2).ChildNodes(1) Is Nothing) Then
    '                            addenda3.Atributo = "Talla"
    '                            addenda3.Valor = nodin.ChildNodes(2).ChildNodes(1).InnerText
    '                            addenda3.Nivel = "2"
    '                            addenda3.Partida = contador
    '                            add.Add(addenda3)
    '                            addenda3 = New AddendaBE()
    '                        Else
    '                            addenda3.Valor = ""
    '                            addenda3.Nivel = "2"
    '                            addenda3.Partida = contador
    '                            add.Add(addenda3)
    '                            addenda3 = New AddendaBE()
    '                        End If
    '                    End If
    '                Next
    '            Else
    '                nombreRpt = ""
    '            End If

    '        ElseIf (node.Name = "GASCRISTOBAL") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_GasCristobal.rpt"
    '            If Not (node.Attributes.ItemOf("Campo1") Is Nothing) Then
    '                addenda.Atributo = "Campo1"
    '                addenda.Valor = node.Attributes.ItemOf("Campo1").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Campo2") Is Nothing) Then
    '                addenda2.Atributo = "Campo2"
    '                addenda2.Valor = node.Attributes.ItemOf("Campo2").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Campo3") Is Nothing) Then
    '                addenda3.Atributo = "Campo3"
    '                addenda3.Valor = node.Attributes.ItemOf("Campo3").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Campo4") Is Nothing) Then
    '                addenda4.Atributo = "Campo4"
    '                addenda4.Valor = node.Attributes.ItemOf("Campo4").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If

    '        ElseIf (node.Name = "Acocota") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            Dim addenda10 As AddendaBE = New AddendaBE()
    '            Dim addenda11 As AddendaBE = New AddendaBE()
    '            Dim addenda12 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Acocota.rpt"
    '            If Not (node.Attributes.ItemOf("Telefonocliente") Is Nothing) Then
    '                addenda.Atributo = "Telefonocliente"
    '                addenda.Valor = node.Attributes.ItemOf("Telefonocliente").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '            If Not (node.Attributes.ItemOf("Entregado") Is Nothing) Then
    '                addenda2.Atributo = "Entregado"
    '                addenda2.Valor = node.Attributes.ItemOf("Entregado").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Telefonoentregado") Is Nothing) Then
    '                addenda3.Atributo = "Telefonoentregado"
    '                addenda3.Valor = node.Attributes.ItemOf("Telefonoentregado").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Cliente") Is Nothing) Then
    '                addenda4.Atributo = "Cliente"
    '                addenda4.Valor = node.Attributes.ItemOf("Cliente").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Vendedor") Is Nothing) Then
    '                addenda5.Atributo = "Vendedor"
    '                addenda5.Valor = node.Attributes.ItemOf("Vendedor").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("Pedido") Is Nothing) Then
    '                addenda6.Atributo = "Pedido"
    '                addenda6.Valor = node.Attributes.ItemOf("Pedido").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("Entrega") Is Nothing) Then
    '                addenda7.Atributo = "Entrega"
    '                addenda7.Valor = node.Attributes.ItemOf("Entrega").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)
    '            End If
    '            If Not (node.Attributes.ItemOf("Textofijo") Is Nothing) Then
    '                addenda8.Atributo = "Textofijo"
    '                addenda8.Valor = node.Attributes.ItemOf("Textofijo").Value
    '                addenda8.Nivel = "1"
    '                addenda8.Partida = "0"
    '                add.Add(addenda8)
    '            Else
    '                addenda8.Valor = ""
    '                addenda8.Nivel = "1"
    '                add.Add(addenda8)
    '            End If
    '            If Not (node.Attributes.ItemOf("Totalcajas") Is Nothing) Then
    '                addenda9.Atributo = "Totalcajas"
    '                addenda9.Valor = node.Attributes.ItemOf("Totalcajas").Value
    '                addenda9.Nivel = "1"
    '                addenda9.Partida = "0"
    '                add.Add(addenda9)
    '            Else
    '                addenda9.Valor = ""
    '                addenda9.Nivel = "1"
    '                add.Add(addenda9)
    '            End If
    '            If Not (node.Attributes.ItemOf("Totalunidades") Is Nothing) Then
    '                addenda10.Atributo = "Totalunidades"
    '                addenda10.Valor = node.Attributes.ItemOf("Totalunidades").Value
    '                addenda10.Nivel = "1"
    '                addenda10.Partida = "0"
    '                add.Add(addenda10)
    '            Else
    '                addenda10.Valor = ""
    '                addenda10.Nivel = "1"
    '                add.Add(addenda10)
    '            End If
    '            If Not (node.Attributes.ItemOf("Foliosfact") Is Nothing) Then
    '                addenda11.Atributo = "Foliosfact"
    '                addenda11.Valor = node.Attributes.ItemOf("Foliosfact").Value
    '                addenda11.Nivel = "1"
    '                addenda11.Partida = "0"
    '                add.Add(addenda11)
    '            Else
    '                addenda11.Valor = ""
    '                addenda11.Nivel = "1"
    '                add.Add(addenda11)
    '            End If
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value

    '                If Not (nodin.Attributes.ItemOf("Preciosugerido") Is Nothing) Then
    '                    addenda12.Atributo = "Preciosugerido"
    '                    addenda12.Valor = nodin.Attributes.ItemOf("Preciosugerido").Value
    '                    addenda12.Nivel = "2"
    '                    addenda12.Partida = contador
    '                    add.Add(addenda12)
    '                    addenda12 = New AddendaBE()
    '                Else
    '                    addenda12.Valor = ""
    '                    addenda12.Nivel = "2"
    '                    addenda12.Partida = contador
    '                    add.Add(addenda12)
    '                    addenda12 = New AddendaBE()
    '                End If
    '            Next

    '        ElseIf (node.Name = "Addenda724") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda1 As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Addenda724.rpt"
    '            If Not (node.Attributes.ItemOf("FechaOperacion") Is Nothing) Then
    '                addenda.Atributo = "FechaOperacion"
    '                addenda.Valor = node.Attributes.ItemOf("FechaOperacion").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Ticket") Is Nothing) Then
    '                addenda1.Atributo = "Ticket"
    '                addenda1.Valor = node.Attributes.ItemOf("Ticket").Value
    '                addenda1.Nivel = "1"
    '                addenda1.Partida = "0"
    '                add.Add(addenda1)
    '            Else
    '                addenda1.Valor = ""
    '                addenda1.Nivel = "1"
    '                add.Add(addenda1)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda2.Atributo = "Observaciones"
    '                addenda2.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If

    '        ElseIf (node.Name = "Anahuac") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Anahuac.rpt"
    '            If Not (node.Attributes.ItemOf("Vendedor") Is Nothing) Then
    '                addenda.Atributo = "Vendedor"
    '                addenda.Valor = node.Attributes.ItemOf("Vendedor").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Anticipo") Is Nothing) Then
    '                addenda2.Atributo = "Anticipo"
    '                addenda2.Valor = node.Attributes.ItemOf("Anticipo").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda3.Atributo = "Observaciones"
    '                addenda3.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value

    '                If Not (nodin.Attributes.ItemOf("Observacion") Is Nothing) Then
    '                    addenda4.Atributo = "Observacion"
    '                    addenda4.Valor = nodin.Attributes.ItemOf("Observacion").Value
    '                    addenda4.Nivel = "2"
    '                    addenda4.Partida = contador
    '                    add.Add(addenda4)
    '                    addenda4 = New AddendaBE()
    '                Else
    '                    addenda4.Valor = ""
    '                    addenda4.Nivel = "2"
    '                    addenda4.Partida = contador
    '                    add.Add(addenda4)
    '                    addenda4 = New AddendaBE()
    '                End If
    '            Next

    '        ElseIf (node.Name = "PlasticDesigns") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_PlasticDesigns.rpt"
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda.Atributo = "Observaciones"
    '                addenda.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "Tractocamionera") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Tractocamionera.rpt"
    '            If Not (node.Attributes.ItemOf("Comentarios") Is Nothing) Then
    '                addenda.Atributo = "Comentarios"
    '                addenda.Valor = node.Attributes.ItemOf("Comentarios").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "Librado") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Librado.rpt"
    '            If Not (node.Attributes.ItemOf("Clavecliente") Is Nothing) Then
    '                addenda.Atributo = "Clavecliente"
    '                addenda.Valor = node.Attributes.ItemOf("Clavecliente").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Vencimiento") Is Nothing) Then
    '                addenda2.Atributo = "Vencimiento"
    '                addenda2.Valor = node.Attributes.ItemOf("Vencimiento").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Vendedor") Is Nothing) Then
    '                addenda3.Atributo = "Vendedor"
    '                addenda3.Valor = node.Attributes.ItemOf("Vendedor").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Maniobras") Is Nothing) Then
    '                addenda4.Atributo = "Maniobras"
    '                addenda4.Valor = node.Attributes.ItemOf("Maniobras").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Subtotal1") Is Nothing) Then
    '                addenda5.Atributo = "Subtotal1"
    '                addenda5.Valor = node.Attributes.ItemOf("Subtotal1").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value

    '                If Not (nodin.Attributes.ItemOf("Nopartida") Is Nothing) Then
    '                    addenda6.Atributo = "Nopartida"
    '                    addenda6.Valor = nodin.Attributes.ItemOf("Nopartida").Value
    '                    addenda6.Nivel = "2"
    '                    addenda6.Partida = contador
    '                    add.Add(addenda6)
    '                    addenda6 = New AddendaBE()
    '                Else
    '                    addenda6.Valor = ""
    '                    addenda6.Nivel = "2"
    '                    addenda6.Partida = contador
    '                    add.Add(addenda6)
    '                    addenda6 = New AddendaBE()
    '                End If
    '                If Not (nodin.Attributes.ItemOf("Codigo") Is Nothing) Then
    '                    addenda7.Atributo = "Codigo"
    '                    addenda7.Valor = nodin.Attributes.ItemOf("Codigo").Value
    '                    addenda7.Nivel = "2"
    '                    addenda7.Partida = contador
    '                    add.Add(addenda7)
    '                    addenda7 = New AddendaBE()
    '                Else
    '                    addenda7.Valor = ""
    '                    addenda7.Nivel = "2"
    '                    addenda7.Partida = contador
    '                    add.Add(addenda7)
    '                    addenda7 = New AddendaBE()
    '                End If
    '                If Not (nodin.Attributes.ItemOf("Clavealterna") Is Nothing) Then
    '                    addenda8.Atributo = "Clavealterna"
    '                    addenda8.Valor = nodin.Attributes.ItemOf("Clavealterna").Value
    '                    addenda8.Nivel = "2"
    '                    addenda8.Partida = contador
    '                    add.Add(addenda8)
    '                    addenda8 = New AddendaBE()
    '                Else
    '                    addenda8.Valor = ""
    '                    addenda8.Nivel = "2"
    '                    addenda8.Partida = contador
    '                    add.Add(addenda8)
    '                    addenda8 = New AddendaBE()
    '                End If
    '                If Not (nodin.Attributes.ItemOf("Marca") Is Nothing) Then
    '                    addenda9.Atributo = "Marca"
    '                    addenda9.Valor = nodin.Attributes.ItemOf("Marca").Value
    '                    addenda9.Nivel = "2"
    '                    addenda9.Partida = contador
    '                    add.Add(addenda9)
    '                    addenda9 = New AddendaBE()
    '                Else
    '                    addenda9.Valor = ""
    '                    addenda9.Nivel = "2"
    '                    addenda9.Partida = contador
    '                    add.Add(addenda9)
    '                    addenda9 = New AddendaBE()
    '                End If
    '            Next

    '        ElseIf (node.Name = "Rolans") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Rolans.rpt"
    '            If Not (node.Attributes.ItemOf("Agentedeventas") Is Nothing) Then
    '                addenda.Atributo = "Agentedeventas"
    '                addenda.Valor = node.Attributes.ItemOf("Agentedeventas").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Ordendecompra") Is Nothing) Then
    '                addenda2.Atributo = "Ordendecompra"
    '                addenda2.Valor = node.Attributes.ItemOf("Ordendecompra").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Noproveedor") Is Nothing) Then
    '                addenda3.Atributo = "Noproveedor"
    '                addenda3.Valor = node.Attributes.ItemOf("Noproveedor").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Infoadicional") Is Nothing) Then
    '                addenda4.Atributo = "Infoadicional"
    '                addenda4.Valor = node.Attributes.ItemOf("Infoadicional").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If

    '        ElseIf (node.Name = "DIKYSA") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            Dim addenda10 As AddendaBE = New AddendaBE()
    '            Dim addenda11 As AddendaBE = New AddendaBE()
    '            Dim addenda12 As AddendaBE = New AddendaBE()
    '            Dim addenda13 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Dikysa.rpt"
    '            If Not (node.Attributes.ItemOf("Noorden") Is Nothing) Then
    '                addenda.Atributo = "Noorden"
    '                addenda.Valor = node.Attributes.ItemOf("Noorden").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Pedido") Is Nothing) Then
    '                addenda2.Atributo = "Pedido"
    '                addenda2.Valor = node.Attributes.ItemOf("Pedido").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Vendedor") Is Nothing) Then
    '                addenda3.Atributo = "Vendedor"
    '                addenda3.Valor = node.Attributes.ItemOf("Vendedor").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Requisicion") Is Nothing) Then
    '                addenda4.Atributo = "Requisicion"
    '                addenda4.Valor = node.Attributes.ItemOf("Requisicion").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Clavecliente") Is Nothing) Then
    '                addenda5.Atributo = "Clavecliente"
    '                addenda5.Valor = node.Attributes.ItemOf("Clavecliente").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("Telefonocliente") Is Nothing) Then
    '                addenda6.Atributo = "Telefonocliente"
    '                addenda6.Valor = node.Attributes.ItemOf("Telefonocliente").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("Faxcliente") Is Nothing) Then
    '                addenda7.Atributo = "Faxcliente"
    '                addenda7.Valor = node.Attributes.ItemOf("Faxcliente").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)
    '            End If
    '            If Not (node.Attributes.ItemOf("Enviara") Is Nothing) Then
    '                addenda8.Atributo = "Enviara"
    '                addenda8.Valor = node.Attributes.ItemOf("Enviara").Value
    '                addenda8.Nivel = "1"
    '                addenda8.Partida = "0"
    '                add.Add(addenda8)
    '            Else
    '                addenda8.Valor = ""
    '                addenda8.Nivel = "1"
    '                add.Add(addenda8)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observacionesd") Is Nothing) Then
    '                addenda9.Atributo = "Observacionesd"
    '                addenda9.Valor = node.Attributes.ItemOf("Observacionesd").Value
    '                addenda9.Nivel = "1"
    '                addenda9.Partida = "0"
    '                add.Add(addenda9)
    '            Else
    '                addenda9.Valor = ""
    '                addenda9.Nivel = "1"
    '                add.Add(addenda9)
    '            End If
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value

    '                If Not (nodin.Attributes.ItemOf("Lote") Is Nothing) Then
    '                    addenda10.Atributo = "Lote"
    '                    addenda10.Valor = nodin.Attributes.ItemOf("Lote").Value
    '                    addenda10.Nivel = "2"
    '                    addenda10.Partida = contador
    '                    add.Add(addenda10)
    '                    addenda10 = New AddendaBE()
    '                Else
    '                    addenda10.Valor = ""
    '                    addenda10.Nivel = "2"
    '                    addenda10.Partida = contador
    '                    add.Add(addenda10)
    '                    addenda10 = New AddendaBE()
    '                End If

    '                If Not (nodin.Attributes.ItemOf("Caducidad") Is Nothing) Then
    '                    addenda11.Atributo = "Caducidad"
    '                    addenda11.Valor = nodin.Attributes.ItemOf("Caducidad").Value
    '                    addenda11.Nivel = "2"
    '                    addenda11.Partida = contador
    '                    add.Add(addenda11)
    '                    addenda11 = New AddendaBE()
    '                Else
    '                    addenda11.Valor = ""
    '                    addenda11.Nivel = "2"
    '                    addenda11.Partida = contador
    '                    add.Add(addenda11)
    '                    addenda11 = New AddendaBE()
    '                End If

    '                If Not (nodin.Attributes.ItemOf("Observacionesp") Is Nothing) Then
    '                    addenda12.Atributo = "Observacionesp"
    '                    addenda12.Valor = nodin.Attributes.ItemOf("Observacionesp").Value
    '                    addenda12.Nivel = "2"
    '                    addenda12.Partida = contador
    '                    add.Add(addenda12)
    '                    addenda12 = New AddendaBE()
    '                Else
    '                    addenda12.Valor = ""
    '                    addenda12.Nivel = "2"
    '                    addenda12.Partida = contador
    '                    add.Add(addenda12)
    '                    addenda12 = New AddendaBE()
    '                End If

    '                If Not (nodin.Attributes.ItemOf("Noserie") Is Nothing) Then
    '                    addenda13.Atributo = "Noserie"
    '                    addenda13.Valor = nodin.Attributes.ItemOf("Noserie").Value
    '                    addenda13.Nivel = "2"
    '                    addenda13.Partida = contador
    '                    add.Add(addenda13)
    '                    addenda13 = New AddendaBE()
    '                Else
    '                    addenda13.Valor = ""
    '                    addenda13.Nivel = "2"
    '                    addenda13.Partida = contador
    '                    add.Add(addenda13)
    '                    addenda13 = New AddendaBE()
    '                End If
    '            Next

    '        ElseIf (node.Name = "ENERGETICO") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Energetico.rpt"
    '            If Not (node.Attributes.ItemOf("Clave") Is Nothing) Then
    '                addenda.Atributo = "Clave"
    '                addenda.Valor = node.Attributes.ItemOf("Clave").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Tickets") Is Nothing) Then
    '                addenda2.Atributo = "Tickets"
    '                addenda2.Valor = node.Attributes.ItemOf("Tickets").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If

    '        ElseIf (node.Name = "Atcagro") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Atcagro.rpt"
    '            If Not (node.Attributes.ItemOf("Referencia") Is Nothing) Then
    '                addenda.Atributo = "Referencia"
    '                addenda.Valor = node.Attributes.ItemOf("Referencia").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "Cholulteca") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Cholulteca.rpt"
    '            If Not (node.Attributes.ItemOf("Propina") Is Nothing) Then
    '                addenda.Atributo = "Propina"
    '                addenda.Valor = node.Attributes.ItemOf("Propina").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "mf:MASFACTURA2") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            Dim addenda10 As AddendaBE = New AddendaBE()
    '            Dim addenda11 As AddendaBE = New AddendaBE()
    '            Dim addenda12 As AddendaBE = New AddendaBE()
    '            Dim addenda13 As AddendaBE = New AddendaBE()
    '            Dim addenda14 As AddendaBE = New AddendaBE()
    '            Dim addenda15 As AddendaBE = New AddendaBE()
    '            If (version = "3.2") Then
    '                nombreRpt = "cfdiCarta_MF.rpt"
    '            ElseIf (version = "2.2") Then
    '                nombreRpt = ""
    '            End If
    '            If (node.ChildNodes(0) IsNot Nothing) Then
    '                For Each nodo As XmlNode In node.ChildNodes(0).ChildNodes
    '                    If (nodo.Attributes(0).Value = "NOMENT") Then
    '                        addenda.Atributo = "NOMENT"
    '                        addenda.Valor = nodo.InnerText
    '                        addenda.Nivel = "1"
    '                        addenda.Partida = "0"
    '                    ElseIf (nodo.Attributes(0).Value = "RFCENT") Then
    '                        addenda2.Atributo = "RFCENT"
    '                        addenda2.Valor = nodo.InnerText
    '                        addenda2.Nivel = "1"
    '                        addenda2.Partida = "0"
    '                    ElseIf (nodo.Attributes(0).Value = "CALENT") Then
    '                        addenda3.Atributo = "CALENT"
    '                        addenda3.Valor = nodo.InnerText
    '                        addenda3.Nivel = "1"
    '                        addenda3.Partida = "0"
    '                    ElseIf (nodo.Attributes(0).Value = "NEXENT") Then
    '                        addenda4.Atributo = "NEXENT"
    '                        addenda4.Valor = nodo.InnerText
    '                        addenda4.Nivel = "1"
    '                        addenda4.Partida = "0"
    '                    ElseIf (nodo.Attributes(0).Value = "NINENT") Then
    '                        addenda5.Atributo = "NINENT"
    '                        addenda5.Valor = nodo.InnerText
    '                        addenda5.Nivel = "1"
    '                        addenda5.Partida = "0"
    '                    ElseIf (nodo.Attributes(0).Value = "COLENT") Then
    '                        addenda6.Atributo = "COLENT"
    '                        addenda6.Valor = nodo.InnerText
    '                        addenda6.Nivel = "1"
    '                        addenda6.Partida = "0"
    '                    ElseIf (nodo.Attributes(0).Value = "LOCENT") Then
    '                        addenda7.Atributo = "LOCENT"
    '                        addenda7.Valor = nodo.InnerText
    '                        addenda7.Nivel = "1"
    '                        addenda7.Partida = "0"
    '                    ElseIf (nodo.Attributes(0).Value = "CODENT") Then
    '                        addenda8.Atributo = "CODENT"
    '                        addenda8.Valor = nodo.InnerText
    '                        addenda8.Nivel = "1"
    '                        addenda8.Partida = "0"
    '                    ElseIf (nodo.Attributes(0).Value = "MUNENT") Then
    '                        addenda9.Atributo = "MUNENT"
    '                        addenda9.Valor = nodo.InnerText
    '                        addenda9.Nivel = "1"
    '                        addenda9.Partida = "0"
    '                    ElseIf (nodo.Attributes(0).Value = "ESTENT") Then
    '                        addenda10.Atributo = "ESTENT"
    '                        addenda10.Valor = nodo.InnerText
    '                        addenda10.Nivel = "1"
    '                        addenda10.Partida = "0"
    '                    ElseIf (nodo.Attributes(0).Value = "PAIENT") Then
    '                        addenda11.Atributo = "PAIENT"
    '                        addenda11.Valor = nodo.InnerText
    '                        addenda11.Nivel = "1"
    '                        addenda11.Partida = "0"
    '                    ElseIf (nodo.Attributes(0).Value = "REFENT") Then
    '                        addenda12.Atributo = "REFENT"
    '                        addenda12.Valor = nodo.InnerText
    '                        addenda12.Nivel = "1"
    '                        addenda12.Partida = "0"
    '                    ElseIf (nodo.Attributes(0).Value = "NOTAS1") Then
    '                        addenda14.Atributo = "NOTAS1"
    '                        addenda14.Valor = nodo.InnerText
    '                        addenda14.Nivel = "1"
    '                        addenda14.Partida = "0"
    '                    End If
    '                Next
    '                If (addenda.Atributo = Nothing) Then
    '                    addenda.Valor = ""
    '                    addenda.Nivel = "1"
    '                End If
    '                If (addenda2.Atributo = Nothing) Then
    '                    addenda2.Valor = ""
    '                    addenda2.Nivel = "1"
    '                End If
    '                If (addenda3.Atributo = Nothing) Then
    '                    addenda3.Valor = ""
    '                    addenda3.Nivel = "1"
    '                End If
    '                If (addenda4.Atributo = Nothing) Then
    '                    addenda4.Valor = ""
    '                    addenda4.Nivel = "1"
    '                End If
    '                If (addenda5.Atributo = Nothing) Then
    '                    addenda5.Valor = ""
    '                    addenda5.Nivel = "1"
    '                End If
    '                If (addenda6.Atributo = Nothing) Then
    '                    addenda6.Valor = ""
    '                    addenda6.Nivel = "1"
    '                End If
    '                If (addenda7.Atributo = Nothing) Then
    '                    addenda7.Valor = ""
    '                    addenda7.Nivel = "1"
    '                End If
    '                If (addenda8.Atributo = Nothing) Then
    '                    addenda8.Valor = ""
    '                    addenda8.Nivel = "1"
    '                End If
    '                If (addenda9.Atributo = Nothing) Then
    '                    addenda9.Valor = ""
    '                    addenda9.Nivel = "1"
    '                End If
    '                If (addenda10.Atributo = Nothing) Then
    '                    addenda10.Valor = ""
    '                    addenda10.Nivel = "1"
    '                End If
    '                If (addenda11.Atributo = Nothing) Then
    '                    addenda11.Valor = ""
    '                    addenda11.Nivel = "1"
    '                End If
    '                If (addenda12.Atributo = Nothing) Then
    '                    addenda12.Valor = ""
    '                    addenda12.Nivel = "1"
    '                End If
    '                If (addenda14.Atributo = Nothing) Then
    '                    addenda14.Valor = ""
    '                    addenda14.Nivel = "1"
    '                End If
    '                add.Add(addenda)
    '                add.Add(addenda2)
    '                add.Add(addenda3)
    '                add.Add(addenda4)
    '                add.Add(addenda5)
    '                add.Add(addenda6)
    '                add.Add(addenda7)
    '                add.Add(addenda8)
    '                add.Add(addenda9)
    '                add.Add(addenda10)
    '                add.Add(addenda11)
    '                add.Add(addenda12)
    '                add.Add(addenda14)
    '            Else
    '                nombreRpt = ""
    '            End If
    '            If (node.ChildNodes(1) IsNot Nothing) Then
    '                If (node.ChildNodes(1).Name = "mf:DETALLE") Then
    '                    Dim contador As Integer = 1
    '                    Dim contadornodo As Integer = 0
    '                    For Each nodo As XmlNode In node.ChildNodes(1).ChildNodes
    '                        If (nodo.Name = "mf:PARTIDA") Then
    '                            For Each nodi As XmlNode In nodo.ChildNodes
    '                                If (nodi.Attributes(0).Value = "NUMLIN") Then
    '                                    contador = nodi.InnerText
    '                                End If
    '                            Next
    '                            For Each nodi As XmlNode In nodo.ChildNodes
    '                                If (nodi.Attributes(0).Value = "CVESKU" Or nodi.Attributes(0).Value = "MONIEP") Then
    '                                    If (nodi.Attributes(0).Value = "CVESKU") Then
    '                                        addenda13.Atributo = "CVESKU"
    '                                        addenda13.Valor = nodi.InnerText
    '                                        addenda13.Nivel = "2"
    '                                        addenda13.Partida = contador
    '                                        add.Add(addenda13)
    '                                        addenda13 = New AddendaBE()
    '                                    End If
    '                                    If (nodi.Attributes(0).Value = "MONIEP") Then
    '                                        addenda15.Atributo = "MONIEP"
    '                                        addenda15.Valor = nodi.InnerText
    '                                        addenda15.Nivel = "2"
    '                                        addenda15.Partida = contador
    '                                        add.Add(addenda15)
    '                                        addenda15 = New AddendaBE()
    '                                    End If
    '                                End If
    '                            Next
    '                        End If
    '                    Next
    '                Else
    '                    nombreRpt = ""
    '                End If
    '            Else
    '                nombreRpt = ""
    '            End If

    '        ElseIf (node.Name = "Gertrudis") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Gertrudis.rpt"
    '            If Not (node.Attributes.ItemOf("Codigo") Is Nothing) Then
    '                addenda.Atributo = "Codigo"
    '                addenda.Valor = node.Attributes.ItemOf("Codigo").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '            If Not (node.Attributes.ItemOf("Contacto") Is Nothing) Then
    '                addenda2.Atributo = "Contacto"
    '                addenda2.Valor = node.Attributes.ItemOf("Contacto").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Vendedor") Is Nothing) Then
    '                addenda3.Atributo = "Vendedor"
    '                addenda3.Valor = node.Attributes.ItemOf("Vendedor").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Descripcion") Is Nothing) Then
    '                addenda4.Atributo = "Descripcion"
    '                addenda4.Valor = node.Attributes.ItemOf("Descripcion").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Descripcion2") Is Nothing) Then
    '                addenda6.Atributo = "Descripcion2"
    '                addenda6.Valor = node.Attributes.ItemOf("Descripcion2").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value
    '                If Not (nodin.Attributes.ItemOf("Descuento") Is Nothing) Then
    '                    addenda5.Atributo = "Descuento"
    '                    addenda5.Valor = nodin.Attributes.ItemOf("Descuento").Value
    '                    addenda5.Nivel = "2"
    '                    addenda5.Partida = contador
    '                    add.Add(addenda5)
    '                    addenda5 = New AddendaBE()
    '                Else
    '                    addenda5.Valor = ""
    '                    addenda5.Nivel = "2"
    '                    addenda5.Partida = contador
    '                    add.Add(addenda5)
    '                    addenda5 = New AddendaBE()
    '                End If
    '            Next

    '        ElseIf (node.Name = "VIAUNOM") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            Dim addenda10 As AddendaBE = New AddendaBE()
    '            Dim addenda11 As AddendaBE = New AddendaBE()
    '            Dim addenda12 As AddendaBE = New AddendaBE()
    '            Dim addenda13 As AddendaBE = New AddendaBE()
    '            Dim addenda14 As AddendaBE = New AddendaBE()
    '            Dim addenda15 As AddendaBE = New AddendaBE()
    '            Dim addenda16 As AddendaBE = New AddendaBE()
    '            Dim addenda17 As AddendaBE = New AddendaBE()
    '            Dim addenda18 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Viaunom.rpt"
    '            If Not (node.Attributes.ItemOf("Codcliente") Is Nothing) Then
    '                addenda.Atributo = "Codcliente"
    '                addenda.Valor = node.Attributes.ItemOf("Codcliente").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '            If Not (node.Attributes.ItemOf("Calle") Is Nothing) Then
    '                addenda2.Atributo = "Calle"
    '                addenda2.Valor = node.Attributes.ItemOf("Calle").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Colonia") Is Nothing) Then
    '                addenda3.Atributo = "Colonia"
    '                addenda3.Valor = node.Attributes.ItemOf("Colonia").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Ciudad") Is Nothing) Then
    '                addenda4.Atributo = "Ciudad"
    '                addenda4.Valor = node.Attributes.ItemOf("Ciudad").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Estado") Is Nothing) Then
    '                addenda6.Atributo = "Estado"
    '                addenda6.Valor = node.Attributes.ItemOf("Estado").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("Cp") Is Nothing) Then
    '                addenda7.Atributo = "Cp"
    '                addenda7.Valor = node.Attributes.ItemOf("Cp").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)
    '            End If
    '            If Not (node.Attributes.ItemOf("Pedido") Is Nothing) Then
    '                addenda8.Atributo = "Pedido"
    '                addenda8.Valor = node.Attributes.ItemOf("Pedido").Value
    '                addenda8.Nivel = "1"
    '                addenda8.Partida = "0"
    '                add.Add(addenda8)
    '            Else
    '                addenda8.Valor = ""
    '                addenda8.Nivel = "1"
    '                add.Add(addenda8)
    '            End If
    '            If Not (node.Attributes.ItemOf("Ordencompra") Is Nothing) Then
    '                addenda9.Atributo = "Ordencompra"
    '                addenda9.Valor = node.Attributes.ItemOf("Ordencompra").Value
    '                addenda9.Nivel = "1"
    '                addenda9.Partida = "0"
    '                add.Add(addenda9)
    '            Else
    '                addenda9.Valor = ""
    '                addenda9.Nivel = "1"
    '                add.Add(addenda9)
    '            End If
    '            If Not (node.Attributes.ItemOf("Proveedor") Is Nothing) Then
    '                addenda10.Atributo = "Proveedor"
    '                addenda10.Valor = node.Attributes.ItemOf("Proveedor").Value
    '                addenda10.Nivel = "1"
    '                addenda10.Partida = "0"
    '                add.Add(addenda10)
    '            Else
    '                addenda10.Valor = ""
    '                addenda10.Nivel = "1"
    '                add.Add(addenda10)
    '            End If
    '            If Not (node.Attributes.ItemOf("Vendedor") Is Nothing) Then
    '                addenda11.Atributo = "Vendedor"
    '                addenda11.Valor = node.Attributes.ItemOf("Vendedor").Value
    '                addenda11.Nivel = "1"
    '                addenda11.Partida = "0"
    '                add.Add(addenda11)
    '            Else
    '                addenda11.Valor = ""
    '                addenda11.Nivel = "1"
    '                add.Add(addenda11)
    '            End If
    '            If Not (node.Attributes.ItemOf("Condpago") Is Nothing) Then
    '                addenda12.Atributo = "Condpago"
    '                addenda12.Valor = node.Attributes.ItemOf("Condpago").Value
    '                addenda12.Nivel = "1"
    '                addenda12.Partida = "0"
    '                add.Add(addenda12)
    '            Else
    '                addenda12.Valor = ""
    '                addenda12.Nivel = "1"
    '                add.Add(addenda12)
    '            End If
    '            If Not (node.Attributes.ItemOf("Vencimiento") Is Nothing) Then
    '                addenda13.Atributo = "Vencimiento"
    '                addenda13.Valor = node.Attributes.ItemOf("Vencimiento").Value
    '                addenda13.Nivel = "1"
    '                addenda13.Partida = "0"
    '                add.Add(addenda13)
    '            Else
    '                addenda13.Valor = ""
    '                addenda13.Nivel = "1"
    '                add.Add(addenda13)
    '            End If
    '            If Not (node.Attributes.ItemOf("Totalpares") Is Nothing) Then
    '                addenda14.Atributo = "Totalpares"
    '                addenda14.Valor = node.Attributes.ItemOf("Totalpares").Value
    '                addenda14.Nivel = "1"
    '                addenda14.Partida = "0"
    '                add.Add(addenda14)
    '            Else
    '                addenda14.Valor = ""
    '                addenda14.Nivel = "1"
    '                add.Add(addenda14)
    '            End If
    '            If Not (node.Attributes.ItemOf("Totalcajas") Is Nothing) Then
    '                addenda15.Atributo = "Totalcajas"
    '                addenda15.Valor = node.Attributes.ItemOf("Totalcajas").Value
    '                addenda15.Nivel = "1"
    '                addenda15.Partida = "0"
    '                add.Add(addenda15)
    '            Else
    '                addenda15.Valor = ""
    '                addenda15.Nivel = "1"
    '                add.Add(addenda15)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda16.Atributo = "Observaciones"
    '                addenda16.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda16.Nivel = "1"
    '                addenda16.Partida = "0"
    '                add.Add(addenda16)
    '            Else
    '                addenda16.Valor = ""
    '                addenda16.Nivel = "1"
    '                add.Add(addenda16)
    '            End If
    '            If Not (node.Attributes.ItemOf("Viaembarque") Is Nothing) Then
    '                addenda17.Atributo = "Viaembarque"
    '                addenda17.Valor = node.Attributes.ItemOf("Viaembarque").Value
    '                addenda17.Nivel = "1"
    '                addenda17.Partida = "0"
    '                add.Add(addenda17)
    '            Else
    '                addenda17.Valor = ""
    '                addenda17.Nivel = "1"
    '                add.Add(addenda17)
    '            End If
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value
    '                If Not (nodin.Attributes.ItemOf("Nocaja") Is Nothing) Then
    '                    addenda18.Atributo = "Nocaja"
    '                    addenda18.Valor = nodin.Attributes.ItemOf("Nocaja").Value
    '                    addenda18.Nivel = "2"
    '                    addenda18.Partida = contador
    '                    add.Add(addenda18)
    '                    addenda18 = New AddendaBE()
    '                Else
    '                    addenda18.Valor = ""
    '                    addenda18.Nivel = "2"
    '                    addenda18.Partida = contador
    '                    add.Add(addenda18)
    '                    addenda18 = New AddendaBE()
    '                End If
    '            Next

    '        ElseIf (node.Name = "VIAUNOS") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Viaunos.rpt"
    '            If Not (node.Attributes.ItemOf("Vendidopor") Is Nothing) Then
    '                addenda.Atributo = "Vendidopor"
    '                addenda.Valor = node.Attributes.ItemOf("Vendidopor").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '            If Not (node.Attributes.ItemOf("Comentarios") Is Nothing) Then
    '                addenda2.Atributo = "Comentarios"
    '                addenda2.Valor = node.Attributes.ItemOf("Comentarios").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If

    '        ElseIf (node.Name = "Italiana") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda1 As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Italiana.rpt"
    '            If Not (node.Attributes.ItemOf("Comentarios") Is Nothing) Then
    '                addenda.Atributo = "Comentarios"
    '                addenda.Valor = node.Attributes.ItemOf("Comentarios").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '            If Not (node.Attributes.ItemOf("Consigna") Is Nothing) Then
    '                addenda1.Atributo = "Consigna"
    '                addenda1.Valor = node.Attributes.ItemOf("Consigna").Value
    '                addenda1.Nivel = "1"
    '                addenda1.Partida = "0"
    '                add.Add(addenda1)
    '            Else
    '                addenda1.Valor = ""
    '                addenda1.Nivel = "1"
    '                add.Add(addenda1)
    '            End If

    '            If Not (node.Attributes.ItemOf("Msub") Is Nothing) Then
    '                addenda2.Atributo = "Msub"
    '                addenda2.Valor = node.Attributes.ItemOf("Msub").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If

    '            Dim contador As Integer = 1
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value
    '                If Not (nodin.Attributes.ItemOf("Ieps") Is Nothing) Then
    '                    addenda3.Atributo = "Ieps"
    '                    addenda3.Valor = nodin.Attributes.ItemOf("Ieps").Value
    '                    addenda3.Nivel = "2"
    '                    addenda3.Partida = contador
    '                    add.Add(addenda3)
    '                    addenda3 = New AddendaBE()
    '                Else
    '                    addenda3.Valor = ""
    '                    addenda3.Nivel = "2"
    '                    addenda3.Partida = contador
    '                    add.Add(addenda3)
    '                    addenda3 = New AddendaBE()
    '                End If
    '            Next

    '        ElseIf (node.Name = "Tapia") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Tapia.rpt"
    '            If Not (node.Attributes.ItemOf("NoCliente") Is Nothing) Then
    '                addenda.Atributo = "NoCliente"
    '                addenda.Valor = node.Attributes.ItemOf("NoCliente").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '            If Not (node.Attributes.ItemOf("Vendedor") Is Nothing) Then
    '                addenda2.Atributo = "Vendedor"
    '                addenda2.Valor = node.Attributes.ItemOf("Vendedor").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If

    '            If Not (node.Attributes.ItemOf("Peso") Is Nothing) Then
    '                addenda3.Atributo = "Peso"
    '                addenda3.Valor = node.Attributes.ItemOf("Peso").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If

    '        ElseIf (node.Name = "Automover") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Automover.rpt"
    '            If Not (node.Attributes.ItemOf("Empresa") Is Nothing) Then
    '                addenda.Atributo = "Empresa"
    '                addenda.Valor = node.Attributes.ItemOf("Empresa").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "Cfdi") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Cfdi.rpt"
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda.Atributo = "Observaciones"
    '                addenda.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "Dis") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            Dim addenda10 As AddendaBE = New AddendaBE()
    '            Dim addenda11 As AddendaBE = New AddendaBE()
    '            Dim addenda12 As AddendaBE = New AddendaBE()
    '            Dim addenda13 As AddendaBE = New AddendaBE()
    '            Dim addenda14 As AddendaBE = New AddendaBE()
    '            Dim addenda15 As AddendaBE = New AddendaBE()
    '            Dim addenda16 As AddendaBE = New AddendaBE()
    '            Dim addenda17 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Dis.rpt"
    '            If Not (node.Attributes.ItemOf("Oc") Is Nothing) Then
    '                addenda.Atributo = "Oc"
    '                addenda.Valor = node.Attributes.ItemOf("Oc").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Control") Is Nothing) Then
    '                addenda2.Atributo = "Control"
    '                addenda2.Valor = node.Attributes.ItemOf("Control").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Pedido") Is Nothing) Then
    '                addenda3.Atributo = "Pedido"
    '                addenda3.Valor = node.Attributes.ItemOf("Pedido").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Datoop1") Is Nothing) Then
    '                addenda4.Atributo = "Datoop1"
    '                addenda4.Valor = node.Attributes.ItemOf("Datoop1").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Datoop2") Is Nothing) Then
    '                addenda5.Atributo = "Datoop2"
    '                addenda5.Valor = node.Attributes.ItemOf("Datoop2").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("Datoop3") Is Nothing) Then
    '                addenda6.Atributo = "Datoop3"
    '                addenda6.Valor = node.Attributes.ItemOf("Datoop3").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("Calle") Is Nothing) Then
    '                addenda7.Atributo = "Calle"
    '                addenda7.Valor = node.Attributes.ItemOf("Calle").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)
    '            End If
    '            If Not (node.Attributes.ItemOf("Next") Is Nothing) Then
    '                addenda8.Atributo = "Next"
    '                addenda8.Valor = node.Attributes.ItemOf("Next").Value
    '                addenda8.Nivel = "1"
    '                addenda8.Partida = "0"
    '                add.Add(addenda8)
    '            Else
    '                addenda8.Valor = ""
    '                addenda8.Nivel = "1"
    '                add.Add(addenda8)
    '            End If
    '            If Not (node.Attributes.ItemOf("Nint") Is Nothing) Then
    '                addenda9.Atributo = "Nint"
    '                addenda9.Valor = node.Attributes.ItemOf("Nint").Value
    '                addenda9.Nivel = "1"
    '                addenda9.Partida = "0"
    '                add.Add(addenda9)
    '            Else
    '                addenda9.Valor = ""
    '                addenda9.Nivel = "1"
    '                add.Add(addenda9)
    '            End If
    '            If Not (node.Attributes.ItemOf("Colonia") Is Nothing) Then
    '                addenda10.Atributo = "Colonia"
    '                addenda10.Valor = node.Attributes.ItemOf("Colonia").Value
    '                addenda10.Nivel = "1"
    '                addenda10.Partida = "0"
    '                add.Add(addenda10)
    '            Else
    '                addenda10.Valor = ""
    '                addenda10.Nivel = "1"
    '                add.Add(addenda10)
    '            End If
    '            If Not (node.Attributes.ItemOf("Localidad") Is Nothing) Then
    '                addenda11.Atributo = "Localidad"
    '                addenda11.Valor = node.Attributes.ItemOf("Localidad").Value
    '                addenda11.Nivel = "1"
    '                addenda11.Partida = "0"
    '                add.Add(addenda11)
    '            Else
    '                addenda11.Valor = ""
    '                addenda11.Nivel = "1"
    '                add.Add(addenda11)
    '            End If
    '            If Not (node.Attributes.ItemOf("Municipio") Is Nothing) Then
    '                addenda12.Atributo = "Municipio"
    '                addenda12.Valor = node.Attributes.ItemOf("Municipio").Value
    '                addenda12.Nivel = "1"
    '                addenda12.Partida = "0"
    '                add.Add(addenda12)
    '            Else
    '                addenda12.Valor = ""
    '                addenda12.Nivel = "1"
    '                add.Add(addenda12)
    '            End If
    '            If Not (node.Attributes.ItemOf("Cp") Is Nothing) Then
    '                addenda13.Atributo = "Cp"
    '                addenda13.Valor = node.Attributes.ItemOf("Cp").Value
    '                addenda13.Nivel = "1"
    '                addenda13.Partida = "0"
    '                add.Add(addenda13)
    '            Else
    '                addenda13.Valor = ""
    '                addenda13.Nivel = "1"
    '                add.Add(addenda13)
    '            End If
    '            If Not (node.Attributes.ItemOf("Estado") Is Nothing) Then
    '                addenda14.Atributo = "Estado"
    '                addenda14.Valor = node.Attributes.ItemOf("Estado").Value
    '                addenda14.Nivel = "1"
    '                addenda14.Partida = "0"
    '                add.Add(addenda14)
    '            Else
    '                addenda14.Valor = ""
    '                addenda14.Nivel = "1"
    '                add.Add(addenda14)
    '            End If
    '            If Not (node.Attributes.ItemOf("Pais") Is Nothing) Then
    '                addenda15.Atributo = "Pais"
    '                addenda15.Valor = node.Attributes.ItemOf("Pais").Value
    '                addenda15.Nivel = "1"
    '                addenda15.Partida = "0"
    '                add.Add(addenda15)
    '            Else
    '                addenda15.Valor = ""
    '                addenda15.Nivel = "1"
    '                add.Add(addenda15)
    '            End If
    '            If Not (node.Attributes.ItemOf("Responsable") Is Nothing) Then
    '                addenda16.Atributo = "Responsable"
    '                addenda16.Valor = node.Attributes.ItemOf("Responsable").Value
    '                addenda16.Nivel = "1"
    '                addenda16.Partida = "0"
    '                add.Add(addenda16)
    '            Else
    '                addenda16.Valor = ""
    '                addenda16.Nivel = "1"
    '                add.Add(addenda16)
    '            End If
    '            If Not (node.Attributes.ItemOf("Puesto") Is Nothing) Then
    '                addenda17.Atributo = "Puesto"
    '                addenda17.Valor = node.Attributes.ItemOf("Puesto").Value
    '                addenda17.Nivel = "1"
    '                addenda17.Partida = "0"
    '                add.Add(addenda17)
    '            Else
    '                addenda17.Valor = ""
    '                addenda17.Nivel = "1"
    '                add.Add(addenda17)
    '            End If

    '        ElseIf (node.Name = "Cptal") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            Dim addenda10 As AddendaBE = New AddendaBE()
    '            Dim addenda11 As AddendaBE = New AddendaBE()
    '            Dim addenda12 As AddendaBE = New AddendaBE()
    '            Dim addenda13 As AddendaBE = New AddendaBE()
    '            Dim addenda14 As AddendaBE = New AddendaBE()
    '            Dim addenda15 As AddendaBE = New AddendaBE()
    '            Dim addenda16 As AddendaBE = New AddendaBE()
    '            Dim addenda17 As AddendaBE = New AddendaBE()
    '            Dim addenda18 As AddendaBE = New AddendaBE()
    '            Dim addenda19 As AddendaBE = New AddendaBE()
    '            Dim addenda20 As AddendaBE = New AddendaBE()
    '            Dim addenda21 As AddendaBE = New AddendaBE()
    '            Dim addenda22 As AddendaBE = New AddendaBE()
    '            Dim addenda23 As AddendaBE = New AddendaBE()
    '            Dim addenda24 As AddendaBE = New AddendaBE()
    '            Dim addenda25 As AddendaBE = New AddendaBE()
    '            Dim addenda26 As AddendaBE = New AddendaBE()
    '            Dim addenda27 As AddendaBE = New AddendaBE()

    '            nombreRpt = "cfdiCarta_Cptal.rpt"

    '            If Not (node.Attributes.ItemOf("Recogeraen") Is Nothing) Then

    '                addenda.Atributo = "Recogeraen"
    '                addenda.Valor = node.Attributes.ItemOf("Recogeraen").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)


    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)

    '            End If
    '            If Not (node.Attributes.ItemOf("Destino") Is Nothing) Then
    '                addenda2.Atributo = "Destino"
    '                addenda2.Valor = node.Attributes.ItemOf("Destino").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Destinatario") Is Nothing) Then

    '                addenda3.Atributo = "Destinatario"
    '                addenda3.Valor = node.Attributes.ItemOf("Destinatario").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)

    '            End If
    '            If Not (node.Attributes.ItemOf("Rfcdes") Is Nothing) Then
    '                addenda4.Atributo = "Rfcdes"
    '                addenda4.Valor = node.Attributes.ItemOf("Rfcdes").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Domiciliodes") Is Nothing) Then

    '                addenda5.Atributo = "Domiciliodes"
    '                addenda5.Valor = node.Attributes.ItemOf("Domiciliodes").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)

    '            End If

    '            If Not (node.Attributes.ItemOf("Entregaraen") Is Nothing) Then
    '                addenda6.Atributo = "Entregaraen"
    '                addenda6.Valor = node.Attributes.ItemOf("Entregaraen").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("Valoruni") Is Nothing) Then

    '                addenda7.Atributo = "Valoruni"
    '                addenda7.Valor = node.Attributes.ItemOf("Valoruni").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)

    '            End If

    '            If Not (node.Attributes.ItemOf("Valordec") Is Nothing) Then
    '                addenda8.Atributo = "Valordec"
    '                addenda8.Valor = node.Attributes.ItemOf("Valordec").Value
    '                addenda8.Nivel = "1"
    '                addenda8.Partida = "0"
    '                add.Add(addenda8)
    '            Else
    '                addenda8.Valor = ""
    '                addenda8.Nivel = "1"
    '                add.Add(addenda8)
    '            End If

    '            If Not (node.Attributes.ItemOf("Reembarco") Is Nothing) Then
    '                addenda9.Atributo = "Reembarco"
    '                addenda9.Valor = node.Attributes.ItemOf("Reembarco").Value
    '                addenda9.Nivel = "1"
    '                addenda9.Partida = "0"
    '                add.Add(addenda9)
    '            Else
    '                addenda9.Valor = ""
    '                addenda9.Nivel = "1"
    '                add.Add(addenda9)
    '            End If

    '            If Not (node.Attributes.ItemOf("Condujo") Is Nothing) Then

    '                addenda10.Atributo = "Condujo"
    '                addenda10.Valor = node.Attributes.ItemOf("Condujo").Value
    '                addenda10.Nivel = "1"
    '                addenda10.Partida = "0"
    '                add.Add(addenda10)
    '            Else
    '                addenda10.Valor = ""
    '                addenda10.Nivel = "1"
    '                add.Add(addenda10)
    '            End If


    '            If Not (node.Attributes.ItemOf("De1") Is Nothing) Then
    '                addenda11.Atributo = "De1"
    '                addenda11.Valor = node.Attributes.ItemOf("De1").Value
    '                addenda11.Nivel = "1"
    '                addenda11.Partida = "0"
    '                add.Add(addenda11)
    '            Else
    '                addenda11.Valor = ""
    '                addenda11.Nivel = "1"
    '                add.Add(addenda11)
    '            End If

    '            If Not (node.Attributes.ItemOf("Reembarcarse") Is Nothing) Then

    '                addenda12.Atributo = "Reembarcarse"
    '                addenda12.Valor = node.Attributes.ItemOf("Reembarcarse").Value
    '                addenda12.Nivel = "1"
    '                addenda12.Partida = "0"
    '                add.Add(addenda12)
    '            Else
    '                addenda12.Valor = ""
    '                addenda12.Nivel = "1"
    '                add.Add(addenda12)

    '            End If


    '            If Not (node.Attributes.ItemOf("Conducira") Is Nothing) Then
    '                addenda13.Atributo = "Conducira"
    '                addenda13.Valor = node.Attributes.ItemOf("Conducira").Value
    '                addenda13.Nivel = "1"
    '                addenda13.Partida = "0"
    '                add.Add(addenda13)
    '            Else
    '                addenda13.Valor = ""
    '                addenda13.Nivel = "1"
    '                add.Add(addenda13)
    '            End If


    '            If Not (node.Attributes.ItemOf("De2") Is Nothing) Then
    '                addenda14.Atributo = "De2"
    '                addenda14.Valor = node.Attributes.ItemOf("De2").Value
    '                addenda14.Nivel = "1"
    '                addenda14.Partida = "0"
    '                add.Add(addenda14)
    '            Else
    '                addenda14.Valor = ""
    '                addenda14.Nivel = "1"
    '                add.Add(addenda14)
    '            End If

    '            If Not (node.Attributes.ItemOf("Documento") Is Nothing) Then
    '                addenda15.Atributo = "Documento"
    '                addenda15.Valor = node.Attributes.ItemOf("Documento").Value
    '                addenda15.Nivel = "1"
    '                addenda15.Partida = "0"
    '                add.Add(addenda15)
    '            Else
    '                addenda15.Valor = ""
    '                addenda15.Nivel = "1"
    '                add.Add(addenda15)
    '            End If

    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda16.Atributo = "Observaciones"
    '                addenda16.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda16.Nivel = "1"
    '                addenda16.Partida = "0"
    '                add.Add(addenda16)
    '            Else
    '                addenda16.Valor = ""
    '                addenda16.Nivel = "1"
    '                add.Add(addenda16)
    '            End If

    '            If Not (node.Attributes.ItemOf("Flete") Is Nothing) Then
    '                addenda17.Atributo = "Flete"
    '                addenda17.Valor = node.Attributes.ItemOf("Flete").Value
    '                addenda17.Nivel = "1"
    '                addenda17.Partida = "0"
    '                add.Add(addenda17)
    '            Else
    '                addenda17.Valor = ""
    '                addenda17.Nivel = "1"
    '                add.Add(addenda17)
    '            End If

    '            If Not (node.Attributes.ItemOf("Cargoseg") Is Nothing) Then
    '                addenda18.Atributo = "Cargoseg"
    '                addenda18.Valor = node.Attributes.ItemOf("Cargoseg").Value
    '                addenda18.Nivel = "1"
    '                addenda18.Partida = "0"
    '                add.Add(addenda18)
    '            Else
    '                addenda18.Valor = ""
    '                addenda18.Nivel = "1"
    '                add.Add(addenda18)
    '            End If

    '            If Not (node.Attributes.ItemOf("Maniobras") Is Nothing) Then
    '                addenda19.Atributo = "Maniobras"
    '                addenda19.Valor = node.Attributes.ItemOf("Maniobras").Value
    '                addenda19.Nivel = "1"
    '                addenda19.Partida = "0"
    '                add.Add(addenda19)
    '            Else
    '                addenda19.Valor = ""
    '                addenda19.Nivel = "1"
    '                add.Add(addenda19)
    '            End If

    '            If Not (node.Attributes.ItemOf("Origen") Is Nothing) Then
    '                addenda20.Atributo = "Origen"
    '                addenda20.Valor = node.Attributes.ItemOf("Origen").Value
    '                addenda20.Nivel = "1"
    '                addenda20.Partida = "0"
    '                add.Add(addenda20)
    '            Else
    '                addenda20.Valor = ""
    '                addenda20.Nivel = "1"
    '                add.Add(addenda20)
    '            End If

    '            If Not (node.Attributes.ItemOf("Facturaorigen") Is Nothing) Then
    '                addenda21.Atributo = "Facturaorigen"
    '                addenda21.Valor = node.Attributes.ItemOf("Facturaorigen").Value
    '                addenda21.Nivel = "1"
    '                addenda21.Partida = "0"
    '                add.Add(addenda21)
    '            Else
    '                addenda21.Valor = ""
    '                addenda21.Nivel = "1"
    '                add.Add(addenda21)
    '            End If


    '            If Not (node.Attributes.ItemOf("Otros") Is Nothing) Then
    '                addenda22.Atributo = "Otros"
    '                addenda22.Valor = node.Attributes.ItemOf("Otros").Value
    '                addenda22.Nivel = "1"
    '                addenda22.Partida = "0"
    '                add.Add(addenda22)
    '            Else
    '                addenda22.Valor = ""
    '                addenda22.Nivel = "1"
    '                add.Add(addenda22)
    '            End If

    '            If Not (node.Attributes.ItemOf("Subtotal2") Is Nothing) Then
    '                addenda23.Atributo = "Subtotal2"
    '                addenda23.Valor = node.Attributes.ItemOf("Subtotal2").Value
    '                addenda23.Nivel = "1"
    '                addenda23.Partida = "0"
    '                add.Add(addenda23)
    '            Else
    '                addenda23.Valor = ""
    '                addenda23.Nivel = "1"
    '                add.Add(addenda23)
    '            End If

    '            If Not (node.Attributes.ItemOf("Alt") Is Nothing) Then
    '                addenda24.Atributo = "Alt"
    '                addenda24.Valor = node.Attributes.ItemOf("Alt").Value
    '                addenda24.Nivel = "1"
    '                addenda24.Partida = "0"
    '                add.Add(addenda24)
    '            Else
    '                addenda24.Valor = ""
    '                addenda24.Nivel = "1"
    '                add.Add(addenda24)
    '            End If

    '            Dim contador As Integer = 1
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value
    '                If Not (nodin.Attributes.ItemOf("Peso") Is Nothing) Then
    '                    addenda25.Atributo = "Peso"
    '                    addenda25.Valor = nodin.Attributes.ItemOf("Peso").Value
    '                    addenda25.Nivel = "2"
    '                    addenda25.Partida = contador
    '                    add.Add(addenda25)
    '                    addenda25 = New AddendaBE()
    '                Else
    '                    addenda25.Valor = ""
    '                    addenda25.Nivel = "2"
    '                    add.Add(addenda25)
    '                    addenda25 = New AddendaBE()
    '                End If

    '                If Not (nodin.Attributes.ItemOf("M3") Is Nothing) Then
    '                    addenda26.Atributo = "M3"
    '                    addenda26.Valor = nodin.Attributes.ItemOf("M3").Value
    '                    addenda26.Nivel = "2"
    '                    addenda26.Partida = contador
    '                    add.Add(addenda26)
    '                    addenda26 = New AddendaBE()
    '                Else
    '                    addenda26.Valor = ""
    '                    addenda26.Nivel = "2"
    '                    add.Add(addenda26)
    '                    addenda26 = New AddendaBE()
    '                End If

    '                If Not (nodin.Attributes.ItemOf("Pesoest") Is Nothing) Then
    '                    addenda27.Atributo = "Pesoest"
    '                    addenda27.Valor = nodin.Attributes.ItemOf("Pesoest").Value
    '                    addenda27.Nivel = "2"
    '                    addenda27.Partida = contador
    '                    add.Add(addenda27)
    '                    addenda27 = New AddendaBE()
    '                Else
    '                    addenda27.Valor = ""
    '                    addenda27.Nivel = "2"
    '                    add.Add(addenda27)
    '                    addenda27 = New AddendaBE()
    '                End If
    '            Next

    '        ElseIf (node.Name = "Larochelle") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Larochelle.rpt"
    '            If Not (node.Attributes.ItemOf("Oc") Is Nothing) Then
    '                addenda.Atributo = "Oc"
    '                addenda.Valor = node.Attributes.ItemOf("Oc").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Pedidos") Is Nothing) Then
    '                addenda2.Atributo = "Pedidos"
    '                addenda2.Valor = node.Attributes.ItemOf("Pedidos").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Remisiones") Is Nothing) Then
    '                addenda3.Atributo = "Remisiones"
    '                addenda3.Valor = node.Attributes.ItemOf("Remisiones").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda4.Atributo = "Observaciones"
    '                addenda4.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Noticias") Is Nothing) Then
    '                addenda5.Atributo = "Noticias"
    '                addenda5.Valor = node.Attributes.ItemOf("Noticias").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If

    '        ElseIf (node.Name = "Stakujut") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Stakujut.rpt"
    '            If Not (node.Attributes.ItemOf("Ventas") Is Nothing) Then
    '                addenda.Atributo = "Ventas"
    '                addenda.Valor = node.Attributes.ItemOf("Ventas").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "Snp") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Snp.rpt"
    '            If Not (node.Attributes.ItemOf("Embarcacion") Is Nothing) Then
    '                addenda.Atributo = "Embarcacion"
    '                addenda.Valor = node.Attributes.ItemOf("Embarcacion").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Peso") Is Nothing) Then
    '                addenda2.Atributo = "Peso"
    '                addenda2.Valor = node.Attributes.ItemOf("Peso").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda3.Atributo = "Observaciones"
    '                addenda3.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If

    '        ElseIf (node.Name = "Addesc") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Addesc.rpt"
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda.Atributo = "Observaciones"
    '                addenda.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value
    '                If Not (nodin.Attributes.ItemOf("Desc") Is Nothing) Then
    '                    addenda2.Atributo = "Desc"
    '                    addenda2.Valor = nodin.Attributes.ItemOf("Desc").Value
    '                    addenda2.Nivel = "2"
    '                    addenda2.Partida = contador
    '                    add.Add(addenda2)
    '                    addenda2 = New AddendaBE()
    '                Else
    '                    addenda2.Valor = ""
    '                    addenda2.Nivel = "2"
    '                    addenda2.Partida = contador
    '                    add.Add(addenda2)
    '                    addenda2 = New AddendaBE()
    '                End If
    '                If Not (nodin.Attributes.ItemOf("Predesc") Is Nothing) Then
    '                    addenda3.Atributo = "Predesc"
    '                    addenda3.Valor = nodin.Attributes.ItemOf("Predesc").Value
    '                    addenda3.Nivel = "2"
    '                    addenda3.Partida = contador
    '                    add.Add(addenda3)
    '                    addenda3 = New AddendaBE()
    '                Else
    '                    addenda3.Valor = ""
    '                    addenda3.Nivel = "2"
    '                    addenda3.Partida = contador
    '                    add.Add(addenda3)
    '                    addenda3 = New AddendaBE()
    '                End If
    '                If Not (nodin.Attributes.ItemOf("Precun") Is Nothing) Then
    '                    addenda4.Atributo = "Precun"
    '                    addenda4.Valor = nodin.Attributes.ItemOf("Precun").Value
    '                    addenda4.Nivel = "2"
    '                    addenda4.Partida = contador
    '                    add.Add(addenda4)
    '                    addenda4 = New AddendaBE()
    '                Else
    '                    addenda4.Valor = ""
    '                    addenda4.Nivel = "2"
    '                    addenda4.Partida = contador
    '                    add.Add(addenda4)
    '                    addenda4 = New AddendaBE()
    '                End If
    '            Next

    '        ElseIf (node.Name = "Teleno") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Teleno.rpt"
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda.Atributo = "Observaciones"
    '                addenda.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Impresora") Is Nothing) Then
    '                addenda2.Atributo = "Impresora"
    '                addenda2.Valor = node.Attributes.ItemOf("Impresora").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("OrdenCompra") Is Nothing) Then
    '                addenda3.Atributo = "OrdenCompra"
    '                addenda3.Valor = node.Attributes.ItemOf("OrdenCompra").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Zona") Is Nothing) Then
    '                addenda4.Atributo = "Zona"
    '                addenda4.Valor = node.Attributes.ItemOf("Zona").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("CodCliente") Is Nothing) Then
    '                addenda5.Atributo = "CodCliente"
    '                addenda5.Valor = node.Attributes.ItemOf("CodCliente").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value
    '                If Not (nodin.Attributes.ItemOf("NumUnidades") Is Nothing) Then
    '                    addenda6.Atributo = "NumUnidades"
    '                    addenda6.Valor = nodin.Attributes.ItemOf("NumUnidades").Value
    '                    addenda6.Nivel = "2"
    '                    addenda6.Partida = contador
    '                    add.Add(addenda6)
    '                    addenda6 = New AddendaBE()
    '                Else
    '                    addenda6.Valor = ""
    '                    addenda6.Nivel = "2"
    '                    addenda6.Partida = contador
    '                    add.Add(addenda6)
    '                    addenda6 = New AddendaBE()
    '                End If
    '            Next


    '        ElseIf (node.Name = "ProvSap") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            Dim addenda10 As AddendaBE = New AddendaBE()
    '            Dim addenda11 As AddendaBE = New AddendaBE()
    '            Dim addenda12 As AddendaBE = New AddendaBE()
    '            Dim addenda13 As AddendaBE = New AddendaBE()
    '            Dim addenda14 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_ProvSap.rpt"
    '            If Not (node.Attributes.ItemOf("NumeroCliente") Is Nothing) Then
    '                addenda.Atributo = "NumeroCliente"
    '                addenda.Valor = node.Attributes.ItemOf("NumeroCliente").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("NumeroProveedor") Is Nothing) Then
    '                addenda2.Atributo = "NumeroProveedor"
    '                addenda2.Valor = node.Attributes.ItemOf("NumeroProveedor").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("AsesorVentas") Is Nothing) Then
    '                addenda3.Atributo = "AsesorVentas"
    '                addenda3.Valor = node.Attributes.ItemOf("AsesorVentas").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("DiasRevision") Is Nothing) Then
    '                addenda4.Atributo = "DiasRevision"
    '                addenda4.Valor = node.Attributes.ItemOf("DiasRevision").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Horario") Is Nothing) Then
    '                addenda5.Atributo = "Horario"
    '                addenda5.Valor = node.Attributes.ItemOf("Horario").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("OrdenCompra") Is Nothing) Then
    '                addenda6.Atributo = "OrdenCompra"
    '                addenda6.Valor = node.Attributes.ItemOf("OrdenCompra").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("AtencionA") Is Nothing) Then
    '                addenda7.Atributo = "AtencionA"
    '                addenda7.Valor = node.Attributes.ItemOf("AtencionA").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)
    '            End If
    '            If Not (node.Attributes.ItemOf("DireccionEntrega") Is Nothing) Then
    '                addenda8.Atributo = "DireccionEntrega"
    '                addenda8.Valor = node.Attributes.ItemOf("DireccionEntrega").Value
    '                addenda8.Nivel = "1"
    '                addenda8.Partida = "0"
    '                add.Add(addenda8)
    '            Else
    '                addenda8.Valor = ""
    '                addenda8.Nivel = "1"
    '                add.Add(addenda8)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda9.Atributo = "Observaciones"
    '                addenda9.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda9.Nivel = "1"
    '                addenda9.Partida = "0"
    '                add.Add(addenda9)
    '            Else
    '                addenda9.Valor = ""
    '                addenda9.Nivel = "1"
    '                add.Add(addenda9)
    '            End If
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            For Each nodin As XmlNode In node.ChildNodes
    '                If (nodin.Attributes("NumeroPartida") IsNot Nothing) Then
    '                    contador = nodin.Attributes("NumeroPartida").Value
    '                    If Not (nodin.Attributes.ItemOf("ClaveCliente") Is Nothing) Then
    '                        addenda10.Atributo = "ClaveCliente"
    '                        addenda10.Valor = nodin.Attributes.ItemOf("ClaveCliente").Value
    '                        addenda10.Nivel = "2"
    '                        addenda10.Partida = contador
    '                        add.Add(addenda10)
    '                        addenda10 = New AddendaBE()
    '                    Else
    '                        addenda10.Valor = ""
    '                        addenda10.Nivel = "2"
    '                        addenda10.Partida = contador
    '                        add.Add(addenda10)
    '                        addenda10 = New AddendaBE()
    '                    End If
    '                    If Not (nodin.Attributes.ItemOf("NumeroRemision") Is Nothing) Then
    '                        addenda11.Atributo = "NumeroRemision"
    '                        addenda11.Valor = nodin.Attributes.ItemOf("NumeroRemision").Value
    '                        addenda11.Nivel = "2"
    '                        addenda11.Partida = contador
    '                        add.Add(addenda11)
    '                        addenda11 = New AddendaBE()
    '                    Else
    '                        addenda11.Valor = ""
    '                        addenda11.Nivel = "2"
    '                        addenda11.Partida = contador
    '                        add.Add(addenda11)
    '                        addenda11 = New AddendaBE()
    '                    End If
    '                    If Not (nodin.Attributes.ItemOf("Slot") Is Nothing) Then
    '                        addenda12.Atributo = "Slot"
    '                        addenda12.Valor = nodin.Attributes.ItemOf("Slot").Value
    '                        addenda12.Nivel = "2"
    '                        addenda12.Partida = contador
    '                        add.Add(addenda12)
    '                        addenda12 = New AddendaBE()
    '                    Else
    '                        addenda12.Valor = ""
    '                        addenda12.Nivel = "2"
    '                        addenda12.Partida = contador
    '                        add.Add(addenda12)
    '                        addenda12 = New AddendaBE()
    '                    End If
    '                    If Not (nodin.Attributes.ItemOf("ObservacionesPartida") Is Nothing) Then
    '                        addenda13.Atributo = "ObservacionesPartida"
    '                        addenda13.Valor = nodin.Attributes.ItemOf("ObservacionesPartida").Value
    '                        addenda13.Nivel = "2"
    '                        addenda13.Partida = contador
    '                        add.Add(addenda13)
    '                        addenda13 = New AddendaBE()
    '                    Else
    '                        addenda13.Valor = ""
    '                        addenda13.Nivel = "2"
    '                        addenda13.Partida = contador
    '                        add.Add(addenda13)
    '                        addenda13 = New AddendaBE()
    '                    End If
    '                    If Not (nodin.Attributes.ItemOf("NoParte") Is Nothing) Then
    '                        addenda14.Atributo = "NoParte"
    '                        addenda14.Valor = nodin.Attributes.ItemOf("NoParte").Value
    '                        addenda14.Nivel = "2"
    '                        addenda14.Partida = contador
    '                        add.Add(addenda14)
    '                        addenda14 = New AddendaBE()
    '                    Else
    '                        addenda14.Valor = ""
    '                        addenda14.Nivel = "2"
    '                        addenda14.Partida = contador
    '                        add.Add(addenda14)
    '                        addenda14 = New AddendaBE()
    '                    End If
    '                End If
    '            Next

    '        ElseIf (node.Name = "Ggm") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            Dim addenda10 As AddendaBE = New AddendaBE()
    '            Dim addenda11 As AddendaBE = New AddendaBE()
    '            Dim addenda12 As AddendaBE = New AddendaBE()
    '            Dim addenda13 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Ggm.rpt"
    '            If Not (node.Attributes.ItemOf("FolioErp") Is Nothing) Then
    '                addenda.Atributo = "FolioErp"
    '                addenda.Valor = node.Attributes.ItemOf("FolioErp").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("NumClientePemex") Is Nothing) Then
    '                addenda2.Atributo = "NumClientePemex"
    '                addenda2.Valor = node.Attributes.ItemOf("NumClientePemex").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("NumCliente") Is Nothing) Then
    '                addenda3.Atributo = "NumCliente"
    '                addenda3.Valor = node.Attributes.ItemOf("NumCliente").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda4.Atributo = "Observaciones"
    '                addenda4.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Impresora") Is Nothing) Then
    '                addenda5.Atributo = "Impresora"
    '                addenda5.Valor = node.Attributes.ItemOf("Impresora").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("Copias") Is Nothing) Then
    '                addenda6.Atributo = "Copias"
    '                addenda6.Valor = node.Attributes.ItemOf("Copias").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("RutaXml") Is Nothing) Then
    '                addenda7.Atributo = "RutaXml"
    '                addenda7.Valor = node.Attributes.ItemOf("RutaXml").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)
    '            End If
    '            If Not (node.Attributes.ItemOf("RutaPdf") Is Nothing) Then
    '                addenda8.Atributo = "RutaPdf"
    '                addenda8.Valor = node.Attributes.ItemOf("RutaPdf").Value
    '                addenda8.Nivel = "1"
    '                addenda8.Partida = "0"
    '                add.Add(addenda8)
    '            Else
    '                addenda8.Valor = ""
    '                addenda8.Nivel = "1"
    '                add.Add(addenda8)
    '            End If
    '            If Not (node.Attributes.ItemOf("RutaTxt") Is Nothing) Then
    '                addenda9.Atributo = "RutaTxt"
    '                addenda9.Valor = node.Attributes.ItemOf("RutaTxt").Value
    '                addenda9.Nivel = "1"
    '                addenda9.Partida = "0"
    '                add.Add(addenda9)
    '            Else
    '                addenda9.Valor = ""
    '                addenda9.Nivel = "1"
    '                add.Add(addenda9)
    '            End If
    '            If Not (node.Attributes.ItemOf("Desde") Is Nothing) Then
    '                addenda10.Atributo = "Desde"
    '                addenda10.Valor = node.Attributes.ItemOf("Desde").Value
    '                addenda10.Nivel = "1"
    '                addenda10.Partida = "0"
    '                add.Add(addenda10)
    '            Else
    '                addenda10.Valor = ""
    '                addenda10.Nivel = "1"
    '                add.Add(addenda10)
    '            End If
    '            If Not (node.Attributes.ItemOf("Hasta") Is Nothing) Then
    '                addenda11.Atributo = "Hasta"
    '                addenda11.Valor = node.Attributes.ItemOf("Hasta").Value
    '                addenda11.Nivel = "1"
    '                addenda11.Partida = "0"
    '                add.Add(addenda11)
    '            Else
    '                addenda11.Valor = ""
    '                addenda11.Nivel = "1"
    '                add.Add(addenda11)
    '            End If
    '            If Not (node.Attributes.ItemOf("Leyenda") Is Nothing) Then
    '                addenda12.Atributo = "Leyenda"
    '                addenda12.Valor = node.Attributes.ItemOf("Leyenda").Value
    '                addenda12.Nivel = "1"
    '                addenda12.Partida = "0"
    '                add.Add(addenda12)
    '            Else
    '                addenda12.Valor = ""
    '                addenda12.Nivel = "1"
    '                add.Add(addenda12)
    '            End If
    '            If Not (node.Attributes.ItemOf("Fcs") Is Nothing) Then
    '                addenda13.Atributo = "Fcs"
    '                addenda13.Valor = node.Attributes.ItemOf("Fcs").Value
    '                addenda13.Nivel = "1"
    '                addenda13.Partida = "0"
    '                add.Add(addenda13)
    '            Else
    '                addenda13.Valor = ""
    '                addenda13.Nivel = "1"
    '                add.Add(addenda13)
    '            End If

    '        ElseIf (node.Name = "Sih") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            If Not (node.Attributes.ItemOf("Propina") Is Nothing) Then
    '                addenda.Atributo = "Propina"
    '                addenda.Valor = node.Attributes.ItemOf("Propina").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Tamaño") Is Nothing) Then
    '                addenda2.Atributo = "Tamaño"
    '                addenda2.Valor = node.Attributes.ItemOf("Tamaño").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '                If (addenda2.Valor = "ESTANDAR") Then
    '                    nombreRpt = "cfdiCarta_Sih.rpt"
    '                Else
    '                    nombreRpt = "cfdiCarta_Sih_Ticket.rpt"
    '                End If
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '                nombreRpt = "cfdiCarta_Sih.rpt"
    '            End If
    '            If Not (node.Attributes.ItemOf("Campo1") Is Nothing) Then
    '                addenda3.Atributo = "Campo1"
    '                addenda3.Valor = node.Attributes.ItemOf("Campo1").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Campo2") Is Nothing) Then
    '                addenda4.Atributo = "Campo2"
    '                addenda4.Valor = node.Attributes.ItemOf("Campo2").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Campo3") Is Nothing) Then
    '                addenda5.Atributo = "Campo3"
    '                addenda5.Valor = node.Attributes.ItemOf("Campo3").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("Campo4") Is Nothing) Then
    '                addenda6.Atributo = "Campo4"
    '                addenda6.Valor = node.Attributes.ItemOf("Campo4").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If

    '        ElseIf (node.Name = "Mocambo") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            If Not (node.Attributes.ItemOf("Propina") Is Nothing) Then
    '                addenda.Atributo = "Propina"
    '                addenda.Valor = node.Attributes.ItemOf("Propina").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Folio") Is Nothing) Then
    '                addenda2.Atributo = "Folio"
    '                addenda2.Valor = node.Attributes.ItemOf("Folio").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Empresa") Is Nothing) Then
    '                addenda3.Atributo = "Empresa"
    '                addenda3.Valor = node.Attributes.ItemOf("Empresa").Value
    '                If (addenda3.Valor = "H") Then
    '                    nombreRpt = "cfdiCarta_HMocambo.rpt"
    '                Else
    '                    nombreRpt = "cfdiCarta_RMocambo.rpt"
    '                End If
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                nombreRpt = "cfdiCarta.rpt"
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda4.Atributo = "Observaciones"
    '                addenda4.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If

    '        ElseIf (node.Name = "Identco") Then
    '            nombreRpt = "cfdiCarta_Identco.rpt"
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            Dim addenda10 As AddendaBE = New AddendaBE()
    '            If Not (node.Attributes.ItemOf("Pedido") Is Nothing) Then
    '                addenda.Atributo = "Pedido"
    '                addenda.Valor = node.Attributes.ItemOf("Pedido").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("TelefonoReceptor") Is Nothing) Then
    '                addenda2.Atributo = "TelefonoReceptor"
    '                addenda2.Valor = node.Attributes.ItemOf("TelefonoReceptor").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("EmbarcarA") Is Nothing) Then
    '                addenda3.Atributo = "EmbarcarA"
    '                addenda3.Valor = node.Attributes.ItemOf("EmbarcarA").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("NoOrden") Is Nothing) Then
    '                addenda4.Atributo = "NoOrden"
    '                addenda4.Valor = node.Attributes.ItemOf("NoOrden").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("FechaOrden") Is Nothing) Then
    '                addenda5.Atributo = "FechaOrden"
    '                addenda5.Valor = node.Attributes.ItemOf("FechaOrden").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("RepVtas") Is Nothing) Then
    '                addenda6.Atributo = "RepVtas"
    '                addenda6.Valor = node.Attributes.ItemOf("RepVtas").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("Loc") Is Nothing) Then
    '                addenda7.Atributo = "Loc"
    '                addenda7.Valor = node.Attributes.ItemOf("Loc").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda8.Atributo = "Observaciones"
    '                addenda8.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda8.Nivel = "1"
    '                addenda8.Partida = "0"
    '                add.Add(addenda8)
    '            Else
    '                addenda8.Valor = ""
    '                addenda8.Nivel = "1"
    '                add.Add(addenda8)
    '            End If
    '            If Not (node.Attributes.ItemOf("Importante") Is Nothing) Then
    '                addenda9.Atributo = "Importante"
    '                addenda9.Valor = node.Attributes.ItemOf("Importante").Value
    '                addenda9.Nivel = "1"
    '                addenda9.Partida = "0"
    '                add.Add(addenda9)
    '            Else
    '                addenda9.Valor = ""
    '                addenda9.Nivel = "1"
    '                add.Add(addenda9)
    '            End If
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value
    '                If Not (nodin.Attributes.ItemOf("ObservacionesP") Is Nothing) Then
    '                    addenda10.Atributo = "ObservacionesP"
    '                    addenda10.Valor = nodin.Attributes.ItemOf("ObservacionesP").Value
    '                    addenda10.Nivel = "2"
    '                    addenda10.Partida = contador
    '                    add.Add(addenda10)
    '                    addenda10 = New AddendaBE()
    '                Else
    '                    addenda10.Valor = ""
    '                    addenda10.Nivel = "2"
    '                    addenda10.Partida = contador
    '                    add.Add(addenda10)
    '                    addenda10 = New AddendaBE()
    '                End If
    '            Next

    '        ElseIf (node.Name = "Angeles") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Angeles.rpt"
    '            If Not (node.Attributes.ItemOf("Fianza") Is Nothing) Then
    '                addenda.Atributo = "Fianza"
    '                addenda.Valor = node.Attributes.ItemOf("Fianza").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Contrato") Is Nothing) Then
    '                addenda2.Atributo = "Contrato"
    '                addenda2.Valor = node.Attributes.ItemOf("Contrato").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Proveedor") Is Nothing) Then
    '                addenda3.Atributo = "Proveedor"
    '                addenda3.Valor = node.Attributes.ItemOf("Proveedor").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("ObservacionD") Is Nothing) Then
    '                addenda4.Atributo = "ObservacionD"
    '                addenda4.Valor = node.Attributes.ItemOf("ObservacionD").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value
    '                If Not (nodin.Attributes.ItemOf("ObservacionP") Is Nothing) Then
    '                    addenda5.Atributo = "ObservacionP"
    '                    addenda5.Valor = nodin.Attributes.ItemOf("ObservacionP").Value
    '                    addenda5.Nivel = "2"
    '                    addenda5.Partida = contador
    '                    add.Add(addenda5)
    '                    addenda5 = New AddendaBE()
    '                Else
    '                    addenda5.Valor = ""
    '                    addenda5.Nivel = "2"
    '                    addenda5.Partida = contador
    '                    add.Add(addenda5)
    '                    addenda5 = New AddendaBE()
    '                End If
    '            Next

    '        ElseIf (node.Name = "Autoluca") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            Dim addenda10 As AddendaBE = New AddendaBE()
    '            Dim addenda11 As AddendaBE = New AddendaBE()
    '            Dim addenda12 As AddendaBE = New AddendaBE()
    '            Dim addenda13 As AddendaBE = New AddendaBE()
    '            Dim addenda14 As AddendaBE = New AddendaBE()
    '            Dim addenda15 As AddendaBE = New AddendaBE()
    '            Dim addenda16 As AddendaBE = New AddendaBE()
    '            Dim addenda17 As AddendaBE = New AddendaBE()
    '            Dim addenda18 As AddendaBE = New AddendaBE()
    '            Dim addenda19 As AddendaBE = New AddendaBE()
    '            Dim addenda20 As AddendaBE = New AddendaBE()
    '            Dim addenda21 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Autoluca.rpt"
    '            If Not (node.Attributes.ItemOf("UnidImp") Is Nothing) Then
    '                addenda.Atributo = "UnidImp"
    '                addenda.Valor = node.Attributes.ItemOf("UnidImp").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("R") Is Nothing) Then
    '                addenda2.Atributo = "R"
    '                addenda2.Valor = node.Attributes.ItemOf("R").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Pedimento") Is Nothing) Then
    '                addenda3.Atributo = "Pedimento"
    '                addenda3.Valor = node.Attributes.ItemOf("Pedimento").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("FechaPed") Is Nothing) Then
    '                addenda4.Atributo = "FechaPed"
    '                addenda4.Valor = node.Attributes.ItemOf("FechaPed").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Aduana") Is Nothing) Then
    '                addenda5.Atributo = "Aduana"
    '                addenda5.Valor = node.Attributes.ItemOf("Aduana").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("Vehiculo") Is Nothing) Then
    '                addenda6.Atributo = "Vehiculo"
    '                addenda6.Valor = node.Attributes.ItemOf("Vehiculo").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("Inventario") Is Nothing) Then
    '                addenda7.Atributo = "Inventario"
    '                addenda7.Valor = node.Attributes.ItemOf("Inventario").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)
    '            End If
    '            If Not (node.Attributes.ItemOf("IgnitionKey") Is Nothing) Then
    '                addenda8.Atributo = "IgnitionKey"
    '                addenda8.Valor = node.Attributes.ItemOf("IgnitionKey").Value
    '                addenda8.Nivel = "1"
    '                addenda8.Partida = "0"
    '                add.Add(addenda8)
    '            Else
    '                addenda8.Valor = ""
    '                addenda8.Nivel = "1"
    '                add.Add(addenda8)
    '            End If
    '            If Not (node.Attributes.ItemOf("SmartKey") Is Nothing) Then
    '                addenda9.Atributo = "SmartKey"
    '                addenda9.Valor = node.Attributes.ItemOf("SmartKey").Value
    '                addenda9.Nivel = "1"
    '                addenda9.Partida = "0"
    '                add.Add(addenda9)
    '            Else
    '                addenda9.Valor = ""
    '                addenda9.Nivel = "1"
    '                add.Add(addenda9)
    '            End If
    '            If Not (node.Attributes.ItemOf("Motor") Is Nothing) Then
    '                addenda10.Atributo = "Motor"
    '                addenda10.Valor = node.Attributes.ItemOf("Motor").Value
    '                addenda10.Nivel = "1"
    '                addenda10.Partida = "0"
    '                add.Add(addenda10)
    '            Else
    '                addenda10.Valor = ""
    '                addenda10.Nivel = "1"
    '                add.Add(addenda10)
    '            End If
    '            If Not (node.Attributes.ItemOf("Producto") Is Nothing) Then
    '                addenda11.Atributo = "Producto"
    '                addenda11.Valor = node.Attributes.ItemOf("Producto").Value
    '                addenda11.Nivel = "1"
    '                addenda11.Partida = "0"
    '                add.Add(addenda11)
    '            Else
    '                addenda11.Valor = ""
    '                addenda11.Nivel = "1"
    '                add.Add(addenda11)
    '            End If
    '            If Not (node.Attributes.ItemOf("Modelo") Is Nothing) Then
    '                addenda12.Atributo = "Modelo"
    '                addenda12.Valor = node.Attributes.ItemOf("Modelo").Value
    '                addenda12.Nivel = "1"
    '                addenda12.Partida = "0"
    '                add.Add(addenda12)
    '            Else
    '                addenda12.Valor = ""
    '                addenda12.Nivel = "1"
    '                add.Add(addenda12)
    '            End If
    '            If Not (node.Attributes.ItemOf("Serie") Is Nothing) Then
    '                addenda13.Atributo = "Serie"
    '                addenda13.Valor = node.Attributes.ItemOf("Serie").Value
    '                addenda13.Nivel = "1"
    '                addenda13.Partida = "0"
    '                add.Add(addenda13)
    '            Else
    '                addenda13.Valor = ""
    '                addenda13.Nivel = "1"
    '                add.Add(addenda13)
    '            End If
    '            If Not (node.Attributes.ItemOf("Capacidad") Is Nothing) Then
    '                addenda14.Atributo = "Capacidad"
    '                addenda14.Valor = node.Attributes.ItemOf("Capacidad").Value
    '                addenda14.Nivel = "1"
    '                addenda14.Partida = "0"
    '                add.Add(addenda14)
    '            Else
    '                addenda14.Valor = ""
    '                addenda14.Nivel = "1"
    '                add.Add(addenda14)
    '            End If
    '            If Not (node.Attributes.ItemOf("Color") Is Nothing) Then
    '                addenda15.Atributo = "Color"
    '                addenda15.Valor = node.Attributes.ItemOf("Color").Value
    '                addenda15.Nivel = "1"
    '                addenda15.Partida = "0"
    '                add.Add(addenda15)
    '            Else
    '                addenda15.Valor = ""
    '                addenda15.Nivel = "1"
    '                add.Add(addenda15)
    '            End If
    '            If Not (node.Attributes.ItemOf("VehiculoMarca") Is Nothing) Then
    '                addenda16.Atributo = "VehiculoMarca"
    '                addenda16.Valor = node.Attributes.ItemOf("VehiculoMarca").Value
    '                addenda16.Nivel = "1"
    '                addenda16.Partida = "0"
    '                add.Add(addenda16)
    '            Else
    '                addenda16.Valor = ""
    '                addenda16.Nivel = "1"
    '                add.Add(addenda16)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda17.Atributo = "Observaciones"
    '                addenda17.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda17.Nivel = "1"
    '                addenda17.Partida = "0"
    '                add.Add(addenda17)
    '            Else
    '                addenda17.Valor = ""
    '                addenda17.Nivel = "1"
    '                add.Add(addenda17)
    '            End If
    '            If Not (node.Attributes.ItemOf("SerieLetra") Is Nothing) Then
    '                addenda18.Atributo = "SerieLetra"
    '                addenda18.Valor = node.Attributes.ItemOf("SerieLetra").Value
    '                addenda18.Nivel = "1"
    '                addenda18.Partida = "0"
    '                add.Add(addenda18)
    '            Else
    '                addenda18.Valor = ""
    '                addenda18.Nivel = "1"
    '                add.Add(addenda18)
    '            End If
    '            If Not (node.Attributes.ItemOf("ClaveVehicular") Is Nothing) Then
    '                addenda19.Atributo = "ClaveVehicular"
    '                addenda19.Valor = node.Attributes.ItemOf("ClaveVehicular").Value
    '                addenda19.Nivel = "1"
    '                addenda19.Partida = "0"
    '                add.Add(addenda19)
    '            Else
    '                addenda19.Valor = ""
    '                addenda19.Nivel = "1"
    '                add.Add(addenda19)
    '            End If
    '            If Not (node.Attributes.ItemOf("Firma1") Is Nothing) Then
    '                addenda20.Atributo = "Firma1"
    '                addenda20.Valor = node.Attributes.ItemOf("Firma1").Value
    '                addenda20.Nivel = "1"
    '                addenda20.Partida = "0"
    '                add.Add(addenda20)
    '            Else
    '                addenda20.Valor = ""
    '                addenda20.Nivel = "1"
    '                add.Add(addenda20)
    '            End If
    '            If Not (node.Attributes.ItemOf("Firma2") Is Nothing) Then
    '                addenda21.Atributo = "Firma2"
    '                addenda21.Valor = node.Attributes.ItemOf("Firma2").Value
    '                addenda21.Nivel = "1"
    '                addenda21.Partida = "0"
    '                add.Add(addenda21)
    '            Else
    '                addenda21.Valor = ""
    '                addenda21.Nivel = "1"
    '                add.Add(addenda21)
    '            End If

    '        ElseIf (node.Name = "Suministros") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Suministros.rpt"
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda.Atributo = "Observaciones"
    '                addenda.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Piezas") Is Nothing) Then
    '                addenda2.Atributo = "Piezas"
    '                addenda2.Valor = node.Attributes.ItemOf("Piezas").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("NoCliente") Is Nothing) Then
    '                addenda3.Atributo = "NoCliente"
    '                addenda3.Valor = node.Attributes.ItemOf("NoCliente").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("NoRemision") Is Nothing) Then
    '                addenda4.Atributo = "NoRemision"
    '                addenda4.Valor = node.Attributes.ItemOf("NoRemision").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Agente") Is Nothing) Then
    '                addenda5.Atributo = "Agente"
    '                addenda5.Valor = node.Attributes.ItemOf("Agente").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("ViaEmbarque") Is Nothing) Then
    '                addenda6.Atributo = "ViaEmbarque"
    '                addenda6.Valor = node.Attributes.ItemOf("ViaEmbarque").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("DiaPagare") Is Nothing) Then
    '                addenda7.Atributo = "DiaPagare"
    '                addenda7.Valor = node.Attributes.ItemOf("DiaPagare").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)
    '            End If

    '        ElseIf (node.Name = "AutolucaDis") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            Dim addenda10 As AddendaBE = New AddendaBE()
    '            Dim addenda11 As AddendaBE = New AddendaBE()
    '            Dim addenda12 As AddendaBE = New AddendaBE()
    '            Dim addenda13 As AddendaBE = New AddendaBE()
    '            Dim addenda14 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_AutolucaDis.rpt"
    '            If Not (node.Attributes.ItemOf("TipoUnidad") Is Nothing) Then
    '                addenda.Atributo = "TipoUnidad"
    '                addenda.Valor = node.Attributes.ItemOf("TipoUnidad").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Modelo") Is Nothing) Then
    '                addenda2.Atributo = "Modelo"
    '                addenda2.Valor = node.Attributes.ItemOf("Modelo").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Placas") Is Nothing) Then
    '                addenda3.Atributo = "Placas"
    '                addenda3.Valor = node.Attributes.ItemOf("Placas").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("SerieVehiculo") Is Nothing) Then
    '                addenda4.Atributo = "SerieVehiculo"
    '                addenda4.Valor = node.Attributes.ItemOf("SerieVehiculo").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("NoReporte") Is Nothing) Then
    '                addenda5.Atributo = "NoReporte"
    '                addenda5.Valor = node.Attributes.ItemOf("NoReporte").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("NoSiniestro") Is Nothing) Then
    '                addenda6.Atributo = "NoSiniestro"
    '                addenda6.Valor = node.Attributes.ItemOf("NoSiniestro").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("NoPoliza") Is Nothing) Then
    '                addenda7.Atributo = "NoPoliza"
    '                addenda7.Valor = node.Attributes.ItemOf("NoPoliza").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)
    '            End If
    '            If Not (node.Attributes.ItemOf("Inc") Is Nothing) Then
    '                addenda8.Atributo = "Inc"
    '                addenda8.Valor = node.Attributes.ItemOf("Inc").Value
    '                addenda8.Nivel = "1"
    '                addenda8.Partida = "0"
    '                add.Add(addenda8)
    '            Else
    '                addenda8.Valor = ""
    '                addenda8.Nivel = "1"
    '                add.Add(addenda8)
    '            End If
    '            If Not (node.Attributes.ItemOf("TipoCliente") Is Nothing) Then
    '                addenda9.Atributo = "TipoCliente"
    '                addenda9.Valor = node.Attributes.ItemOf("TipoCliente").Value
    '                addenda9.Nivel = "1"
    '                addenda9.Partida = "0"
    '                add.Add(addenda9)
    '            Else
    '                addenda9.Valor = ""
    '                addenda9.Nivel = "1"
    '                add.Add(addenda9)
    '            End If
    '            If Not (node.Attributes.ItemOf("Referencia") Is Nothing) Then
    '                addenda10.Atributo = "Referencia"
    '                addenda10.Valor = node.Attributes.ItemOf("Referencia").Value
    '                addenda10.Nivel = "1"
    '                addenda10.Partida = "0"
    '                add.Add(addenda10)
    '            Else
    '                addenda10.Valor = ""
    '                addenda10.Nivel = "1"
    '                add.Add(addenda10)
    '            End If
    '            If Not (node.Attributes.ItemOf("NoCliente") Is Nothing) Then
    '                addenda11.Atributo = "NoCliente"
    '                addenda11.Valor = node.Attributes.ItemOf("NoCliente").Value
    '                addenda11.Nivel = "1"
    '                addenda11.Partida = "0"
    '                add.Add(addenda11)
    '            Else
    '                addenda11.Valor = ""
    '                addenda11.Nivel = "1"
    '                add.Add(addenda11)
    '            End If
    '            If Not (node.Attributes.ItemOf("Kilometraje") Is Nothing) Then
    '                addenda12.Atributo = "Kilometraje"
    '                addenda12.Valor = node.Attributes.ItemOf("Kilometraje").Value
    '                addenda12.Nivel = "1"
    '                addenda12.Partida = "0"
    '                add.Add(addenda12)
    '            Else
    '                addenda12.Valor = ""
    '                addenda12.Nivel = "1"
    '                add.Add(addenda12)
    '            End If
    '            If Not (node.Attributes.ItemOf("Autorizacion") Is Nothing) Then
    '                addenda13.Atributo = "Autorizacion"
    '                addenda13.Valor = node.Attributes.ItemOf("Autorizacion").Value
    '                addenda13.Nivel = "1"
    '                addenda13.Partida = "0"
    '                add.Add(addenda13)
    '            Else
    '                addenda13.Valor = ""
    '                addenda13.Nivel = "1"
    '                add.Add(addenda13)
    '            End If
    '            If Not (node.Attributes.ItemOf("NoEconomico") Is Nothing) Then
    '                addenda14.Atributo = "NoEconomico"
    '                addenda14.Valor = node.Attributes.ItemOf("NoEconomico").Value
    '                addenda14.Nivel = "1"
    '                addenda14.Partida = "0"
    '                add.Add(addenda14)
    '            Else
    '                addenda14.Valor = ""
    '                addenda14.Nivel = "1"
    '                add.Add(addenda14)
    '            End If

    '        ElseIf (node.Name = "Fitonat") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Fitonat.rpt"
    '            If Not (node.Attributes.ItemOf("Codigo") Is Nothing) Then
    '                addenda.Atributo = "Codigo"
    '                addenda.Valor = node.Attributes.ItemOf("Codigo").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("CodigoCliente") Is Nothing) Then
    '                addenda2.Atributo = "CodigoCliente"
    '                addenda2.Valor = node.Attributes.ItemOf("CodigoCliente").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If

    '        ElseIf (node.Name = "NuevoHotel") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_NuevoHotel.rpt"
    '            If Not (node.Attributes.ItemOf("Propina") Is Nothing) Then
    '                addenda.Atributo = "Propina"
    '                addenda.Valor = node.Attributes.ItemOf("Propina").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Folio") Is Nothing) Then
    '                addenda2.Atributo = "Folio"
    '                addenda2.Valor = node.Attributes.ItemOf("Folio").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("Empresa") Is Nothing) Then
    '                addenda3.Atributo = "Empresa"
    '                addenda3.Valor = node.Attributes.ItemOf("Empresa").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("NombreHuesped") Is Nothing) Then
    '                addenda4.Atributo = "NombreHuesped"
    '                addenda4.Valor = node.Attributes.ItemOf("NombreHuesped").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("NumeroHabitacion") Is Nothing) Then
    '                addenda5.Atributo = "NumeroHabitacion"
    '                addenda5.Valor = node.Attributes.ItemOf("NumeroHabitacion").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("NumeroConfirmacion") Is Nothing) Then
    '                addenda6.Atributo = "NumeroConfirmacion"
    '                addenda6.Valor = node.Attributes.ItemOf("NumeroConfirmacion").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("FechaEntrada") Is Nothing) Then
    '                addenda7.Atributo = "FechaEntrada"
    '                addenda7.Valor = node.Attributes.ItemOf("FechaEntrada").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)
    '            End If
    '            If Not (node.Attributes.ItemOf("FechaSalida") Is Nothing) Then
    '                addenda8.Atributo = "FechaSalida"
    '                addenda8.Valor = node.Attributes.ItemOf("FechaSalida").Value
    '                addenda8.Nivel = "1"
    '                addenda8.Partida = "0"
    '                add.Add(addenda8)
    '            Else
    '                addenda8.Valor = ""
    '                addenda8.Nivel = "1"
    '                add.Add(addenda8)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda9.Atributo = "Observaciones"
    '                addenda9.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda9.Nivel = "1"
    '                addenda9.Partida = "0"
    '                add.Add(addenda9)
    '            Else
    '                addenda9.Valor = ""
    '                addenda9.Nivel = "1"
    '                add.Add(addenda9)
    '            End If

    '        ElseIf (node.Name = "Jyq") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Jyq.rpt"
    '            If Not (node.Attributes.ItemOf("OrdenCompra") Is Nothing) Then
    '                addenda.Atributo = "OrdenCompra"
    '                addenda.Valor = node.Attributes.ItemOf("OrdenCompra").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "Creadi") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Creadi.rpt"
    '            If Not (node.Attributes.ItemOf("NoRemision") Is Nothing) Then
    '                addenda.Atributo = "NoRemision"
    '                addenda.Valor = node.Attributes.ItemOf("NoRemision").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda2.Atributo = "Observaciones"
    '                addenda2.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            Dim contador As Integer = 1
    '            Dim contadornodo As Integer = 0
    '            For Each nodin As XmlNode In node.ChildNodes
    '                contador = nodin.Attributes("Partida").Value
    '                If Not (nodin.Attributes.ItemOf("NoPartida") Is Nothing) Then
    '                    addenda3.Atributo = "NoPartida"
    '                    addenda3.Valor = nodin.Attributes.ItemOf("NoPartida").Value
    '                    addenda3.Nivel = "2"
    '                    addenda3.Partida = contador
    '                    add.Add(addenda3)
    '                    addenda3 = New AddendaBE()
    '                Else
    '                    addenda3.Valor = ""
    '                    addenda3.Nivel = "2"
    '                    addenda3.Partida = contador
    '                    add.Add(addenda3)
    '                    addenda3 = New AddendaBE()
    '                End If
    '            Next

    '        ElseIf (node.Name = "Cauda") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            Dim addenda3 As AddendaBE = New AddendaBE()
    '            Dim addenda4 As AddendaBE = New AddendaBE()
    '            Dim addenda5 As AddendaBE = New AddendaBE()
    '            Dim addenda6 As AddendaBE = New AddendaBE()
    '            Dim addenda7 As AddendaBE = New AddendaBE()
    '            Dim addenda8 As AddendaBE = New AddendaBE()
    '            Dim addenda9 As AddendaBE = New AddendaBE()
    '            Dim addenda10 As AddendaBE = New AddendaBE()
    '            Dim addenda11 As AddendaBE = New AddendaBE()
    '            Dim addenda12 As AddendaBE = New AddendaBE()
    '            Dim addenda13 As AddendaBE = New AddendaBE()
    '            Dim addenda14 As AddendaBE = New AddendaBE()
    '            Dim addenda15 As AddendaBE = New AddendaBE()
    '            Dim addenda16 As AddendaBE = New AddendaBE()
    '            Dim addenda17 As AddendaBE = New AddendaBE()
    '            Dim addenda18 As AddendaBE = New AddendaBE()
    '            Dim addenda19 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Cauda.rpt"
    '            If Not (node.Attributes.ItemOf("Observaciones") Is Nothing) Then
    '                addenda.Atributo = "Observaciones"
    '                addenda.Valor = node.Attributes.ItemOf("Observaciones").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("Piezas") Is Nothing) Then
    '                addenda2.Atributo = "Piezas"
    '                addenda2.Valor = node.Attributes.ItemOf("Piezas").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If
    '            If Not (node.Attributes.ItemOf("NoCliente") Is Nothing) Then
    '                addenda3.Atributo = "NoCliente"
    '                addenda3.Valor = node.Attributes.ItemOf("NoCliente").Value
    '                addenda3.Nivel = "1"
    '                addenda3.Partida = "0"
    '                add.Add(addenda3)
    '            Else
    '                addenda3.Valor = ""
    '                addenda3.Nivel = "1"
    '                add.Add(addenda3)
    '            End If
    '            If Not (node.Attributes.ItemOf("NoRemision") Is Nothing) Then
    '                addenda4.Atributo = "NoRemision"
    '                addenda4.Valor = node.Attributes.ItemOf("NoRemision").Value
    '                addenda4.Nivel = "1"
    '                addenda4.Partida = "0"
    '                add.Add(addenda4)
    '            Else
    '                addenda4.Valor = ""
    '                addenda4.Nivel = "1"
    '                add.Add(addenda4)
    '            End If
    '            If Not (node.Attributes.ItemOf("Agente") Is Nothing) Then
    '                addenda5.Atributo = "Agente"
    '                addenda5.Valor = node.Attributes.ItemOf("Agente").Value
    '                addenda5.Nivel = "1"
    '                addenda5.Partida = "0"
    '                add.Add(addenda5)
    '            Else
    '                addenda5.Valor = ""
    '                addenda5.Nivel = "1"
    '                add.Add(addenda5)
    '            End If
    '            If Not (node.Attributes.ItemOf("ViaEmbarque") Is Nothing) Then
    '                addenda6.Atributo = "ViaEmbarque"
    '                addenda6.Valor = node.Attributes.ItemOf("ViaEmbarque").Value
    '                addenda6.Nivel = "1"
    '                addenda6.Partida = "0"
    '                add.Add(addenda6)
    '            Else
    '                addenda6.Valor = ""
    '                addenda6.Nivel = "1"
    '                add.Add(addenda6)
    '            End If
    '            If Not (node.Attributes.ItemOf("DiaPagare") Is Nothing) Then
    '                addenda7.Atributo = "DiaPagare"
    '                addenda7.Valor = node.Attributes.ItemOf("DiaPagare").Value
    '                addenda7.Nivel = "1"
    '                addenda7.Partida = "0"
    '                add.Add(addenda7)
    '            Else
    '                addenda7.Valor = ""
    '                addenda7.Nivel = "1"
    '                add.Add(addenda7)
    '            End If
    '            If Not (node.Attributes.ItemOf("Cosignatario") Is Nothing) Then
    '                addenda8.Atributo = "Consignatario"
    '                addenda8.Valor = node.Attributes.ItemOf("Consignatario").Value
    '                addenda8.Nivel = "1"
    '                addenda8.Partida = "0"
    '                add.Add(addenda8)
    '            Else
    '                addenda8.Valor = ""
    '                addenda8.Nivel = "1"
    '                add.Add(addenda8)
    '            End If
    '            If Not (node.Attributes.ItemOf("Clave") Is Nothing) Then
    '                addenda9.Atributo = "Clave"
    '                addenda9.Valor = node.Attributes.ItemOf("Clave").Value
    '                addenda9.Nivel = "1"
    '                addenda9.Partida = "0"
    '                add.Add(addenda9)
    '            Else
    '                addenda9.Valor = ""
    '                addenda9.Nivel = "1"
    '                add.Add(addenda9)
    '            End If
    '            If Not (node.Attributes.ItemOf("Direccion1") Is Nothing) Then
    '                addenda10.Atributo = "Direccion1"
    '                addenda10.Valor = node.Attributes.ItemOf("Direccion1").Value
    '                addenda10.Nivel = "1"
    '                addenda10.Partida = "0"
    '                add.Add(addenda10)
    '            Else
    '                addenda10.Valor = ""
    '                addenda10.Nivel = "1"
    '                add.Add(addenda10)
    '            End If
    '            If Not (node.Attributes.ItemOf("Direccion2") Is Nothing) Then
    '                addenda11.Atributo = "Direccion2"
    '                addenda11.Valor = node.Attributes.ItemOf("Direccion2").Value
    '                addenda11.Nivel = "1"
    '                addenda11.Partida = "0"
    '                add.Add(addenda11)
    '            Else
    '                addenda11.Valor = ""
    '                addenda11.Nivel = "1"
    '                add.Add(addenda11)
    '            End If
    '            If Not (node.Attributes.ItemOf("Direccion3") Is Nothing) Then
    '                addenda12.Atributo = "Direccion3"
    '                addenda12.Valor = node.Attributes.ItemOf("Direccion3").Value
    '                addenda12.Nivel = "1"
    '                addenda12.Partida = "0"
    '                add.Add(addenda12)
    '            Else
    '                addenda12.Valor = ""
    '                addenda12.Nivel = "1"
    '                add.Add(addenda12)
    '            End If
    '            If Not (node.Attributes.ItemOf("Direccion4") Is Nothing) Then
    '                addenda13.Atributo = "Direccion4"
    '                addenda13.Valor = node.Attributes.ItemOf("Direccion4").Value
    '                addenda13.Nivel = "1"
    '                addenda13.Partida = "0"
    '                add.Add(addenda13)
    '            Else
    '                addenda13.Valor = ""
    '                addenda13.Nivel = "1"
    '                add.Add(addenda13)
    '            End If
    '            If Not (node.Attributes.ItemOf("Telefonos") Is Nothing) Then
    '                addenda14.Atributo = "Telefonos"
    '                addenda14.Valor = node.Attributes.ItemOf("Telefonos").Value
    '                addenda14.Nivel = "1"
    '                addenda14.Partida = "0"
    '                add.Add(addenda14)
    '            Else
    '                addenda14.Valor = ""
    '                addenda14.Nivel = "1"
    '                add.Add(addenda14)
    '            End If
    '            If Not (node.Attributes.ItemOf("Contacto") Is Nothing) Then
    '                addenda15.Atributo = "Contacto"
    '                addenda15.Valor = node.Attributes.ItemOf("Contacto").Value
    '                addenda15.Nivel = "1"
    '                addenda15.Partida = "0"
    '                add.Add(addenda15)
    '            Else
    '                addenda15.Valor = ""
    '                addenda15.Nivel = "1"
    '                add.Add(addenda15)
    '            End If
    '            If Not (node.Attributes.ItemOf("NoContrato") Is Nothing) Then
    '                addenda16.Atributo = "NoContrato"
    '                addenda16.Valor = node.Attributes.ItemOf("NoContrato").Value
    '                addenda16.Nivel = "1"
    '                addenda16.Partida = "0"
    '                add.Add(addenda16)
    '            Else
    '                addenda16.Valor = ""
    '                addenda16.Nivel = "1"
    '                add.Add(addenda16)
    '            End If
    '            If Not (node.Attributes.ItemOf("CtaClabe") Is Nothing) Then
    '                addenda17.Atributo = "CtaClabe"
    '                addenda17.Valor = node.Attributes.ItemOf("CtaClabe").Value
    '                addenda17.Nivel = "1"
    '                addenda17.Partida = "0"
    '                add.Add(addenda17)
    '            Else
    '                addenda17.Valor = ""
    '                addenda17.Nivel = "1"
    '                add.Add(addenda17)
    '            End If
    '            If Not (node.Attributes.ItemOf("Proveedor") Is Nothing) Then
    '                addenda18.Atributo = "Proveedor"
    '                addenda18.Valor = node.Attributes.ItemOf("Proveedor").Value
    '                addenda18.Nivel = "1"
    '                addenda18.Partida = "0"
    '                add.Add(addenda18)
    '            Else
    '                addenda18.Valor = ""
    '                addenda18.Nivel = "1"
    '                add.Add(addenda18)
    '            End If
    '            If Not (node.Attributes.ItemOf("Cliente") Is Nothing) Then
    '                addenda19.Atributo = "Cliente"
    '                addenda19.Valor = node.Attributes.ItemOf("Cliente").Value
    '                addenda19.Nivel = "1"
    '                addenda19.Partida = "0"
    '                add.Add(addenda19)
    '            Else
    '                addenda19.Valor = ""
    '                addenda19.Nivel = "1"
    '                add.Add(addenda19)
    '            End If

    '        ElseIf (node.Name = "asant:AddendaSantanderV1") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            Dim addenda2 As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Cauda.rpt"
    '            If Not (node.Attributes.ItemOf("email") Is Nothing) Then
    '                addenda.Atributo = "email"
    '                addenda.Valor = node.Attributes.ItemOf("email").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If
    '            If Not (node.Attributes.ItemOf("ordenCompra") Is Nothing) Then
    '                addenda2.Atributo = "ordenCompra"
    '                addenda2.Valor = node.Attributes.ItemOf("ordenCompra").Value
    '                addenda2.Nivel = "1"
    '                addenda2.Partida = "0"
    '                add.Add(addenda2)
    '            Else
    '                addenda2.Valor = ""
    '                addenda2.Nivel = "1"
    '                add.Add(addenda2)
    '            End If

    '        ElseIf (node.Name = "PowerStar") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_PowerStar.rpt"
    '            If Not (node.Attributes.ItemOf("Entrega") Is Nothing) Then
    '                addenda.Atributo = "Entrega"
    '                addenda.Valor = node.Attributes.ItemOf("Entrega").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "Envio") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Nomina.rpt"
    '            If Not (node.Attributes.ItemOf("CorreoElectronico") Is Nothing) Then
    '                addenda.Atributo = "CorreoElectronico"
    '                addenda.Valor = node.Attributes.ItemOf("CorreoElectronico").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "Lantana") Then
    '            Dim addenda As AddendaBE = New AddendaBE()
    '            nombreRpt = "cfdiCarta_Lantana.rpt"
    '            If Not (node.Attributes.ItemOf("FondoGarantia") Is Nothing) Then
    '                addenda.Atributo = "FondoGarantia"
    '                addenda.Valor = node.Attributes.ItemOf("FondoGarantia").Value
    '                addenda.Nivel = "1"
    '                addenda.Partida = "0"
    '                add.Add(addenda)
    '            Else
    '                addenda.Valor = ""
    '                addenda.Nivel = "1"
    '                add.Add(addenda)
    '            End If

    '        ElseIf (node.Name = "si:Encabezado") Then
    '            If (node.ChildNodes.Count > 0) Then
    '                If (node.ChildNodes(0).Name = "Rest") Then
    '                    Dim node2 As XmlNode = node.ChildNodes(0)
    '                    Dim addenda As AddendaBE = New AddendaBE()
    '                    Dim addenda2 As AddendaBE = New AddendaBE()

    '                    nombreRpt = "cfdiCarta_Rest.rpt"
    '                    If Not (node2.Attributes.ItemOf("Propina") Is Nothing) Then
    '                        If (respuesta) Then
    '                            addenda.Atributo = "Propina"
    '                            addenda.Valor = node2.Attributes.ItemOf("Propina").Value
    '                            addenda.Nivel = "1"
    '                            addenda.Partida = "0"
    '                            add.Add(addenda)
    '                        Else
    '                            addenda.Valor = ""
    '                            addenda.Nivel = "1"
    '                            add.Add(addenda)
    '                        End If

    '                    Else
    '                        addenda.Valor = ""
    '                        addenda.Nivel = "1"
    '                        add.Add(addenda)

    '                    End If
    '                    If Not (node2.Attributes.ItemOf("Ticket") Is Nothing) Then
    '                        addenda2.Atributo = "Ticket"
    '                        addenda2.Valor = node2.Attributes.ItemOf("Ticket").Value
    '                        addenda2.Nivel = "1"
    '                        addenda2.Partida = "0"
    '                        add.Add(addenda2)
    '                    Else
    '                        addenda2.Valor = ""
    '                        addenda2.Nivel = "1"
    '                        add.Add(addenda2)
    '                    End If
    '                ElseIf (node.ChildNodes(0).Name = "CartaPorte") Then


    '                    Dim node2 As XmlNode = node.ChildNodes(0)
    '                    Dim addenda As AddendaBE = New AddendaBE()
    '                    Dim addenda2 As AddendaBE = New AddendaBE()
    '                    Dim addenda3 As AddendaBE = New AddendaBE()
    '                    Dim addenda4 As AddendaBE = New AddendaBE()
    '                    Dim addenda5 As AddendaBE = New AddendaBE()
    '                    Dim addenda6 As AddendaBE = New AddendaBE()
    '                    Dim addenda7 As AddendaBE = New AddendaBE()
    '                    Dim addenda8 As AddendaBE = New AddendaBE()
    '                    Dim addenda9 As AddendaBE = New AddendaBE()
    '                    Dim addenda10 As AddendaBE = New AddendaBE()
    '                    Dim addenda11 As AddendaBE = New AddendaBE()
    '                    Dim addenda12 As AddendaBE = New AddendaBE()
    '                    Dim addenda13 As AddendaBE = New AddendaBE()
    '                    Dim addenda14 As AddendaBE = New AddendaBE()
    '                    Dim addenda15 As AddendaBE = New AddendaBE()
    '                    Dim addenda16 As AddendaBE = New AddendaBE()
    '                    Dim addenda17 As AddendaBE = New AddendaBE()
    '                    Dim addenda18 As AddendaBE = New AddendaBE()
    '                    Dim addenda19 As AddendaBE = New AddendaBE()
    '                    Dim addenda20 As AddendaBE = New AddendaBE()
    '                    Dim addenda21 As AddendaBE = New AddendaBE()

    '                    nombreRpt = "cfdiCarta_Porte.rpt"
    '                    If respuesta = False Then
    '                        nombreRpt = "cfdiCarta.rpt"
    '                    End If

    '                    If Not (node2.Attributes.ItemOf("PILOTO") Is Nothing) Then

    '                        addenda.Atributo = "PILOTO"
    '                        addenda.Valor = node2.Attributes.ItemOf("PILOTO").Value
    '                        addenda.Nivel = "1"
    '                        addenda.Partida = "0"
    '                        add.Add(addenda)


    '                    Else
    '                        addenda.Valor = ""
    '                        addenda.Nivel = "1"
    '                        add.Add(addenda)

    '                    End If
    '                    If Not (node2.Attributes.ItemOf("PLACA") Is Nothing) Then
    '                        addenda2.Atributo = "PLACA"
    '                        addenda2.Valor = node2.Attributes.ItemOf("PLACA").Value
    '                        addenda2.Nivel = "1"
    '                        addenda2.Partida = "0"
    '                        add.Add(addenda2)
    '                    Else
    '                        addenda2.Valor = ""
    '                        addenda2.Nivel = "1"
    '                        add.Add(addenda2)
    '                    End If
    '                    If Not (node2.Attributes.ItemOf("REMITENTES") Is Nothing) Then

    '                        addenda3.Atributo = "REMITENTES"
    '                        addenda3.Valor = node2.Attributes.ItemOf("REMITENTES").Value
    '                        addenda3.Nivel = "1"
    '                        addenda3.Partida = "0"
    '                        add.Add(addenda3)


    '                    Else
    '                        addenda3.Valor = ""
    '                        addenda3.Nivel = "1"
    '                        add.Add(addenda3)

    '                    End If
    '                    If Not (node2.Attributes.ItemOf("CODIGO") Is Nothing) Then
    '                        addenda4.Atributo = "CODIGO"
    '                        addenda4.Valor = node2.Attributes.ItemOf("CODIGO").Value
    '                        addenda4.Nivel = "1"
    '                        addenda4.Partida = "0"
    '                        add.Add(addenda4)
    '                    Else
    '                        addenda4.Valor = ""
    '                        addenda4.Nivel = "1"
    '                        add.Add(addenda4)
    '                    End If
    '                    If Not (node2.Attributes.ItemOf("DESTINATARIO") Is Nothing) Then

    '                        addenda5.Atributo = "DESTINATARIO"
    '                        addenda5.Valor = node2.Attributes.ItemOf("DESTINATARIO").Value
    '                        addenda5.Nivel = "1"
    '                        addenda5.Partida = "0"
    '                        add.Add(addenda5)
    '                    Else
    '                        addenda5.Valor = ""
    '                        addenda5.Nivel = "1"
    '                        add.Add(addenda5)

    '                    End If

    '                    If Not (node2.Attributes.ItemOf("ENTREGA") Is Nothing) Then
    '                        addenda6.Atributo = "ENTREGA"
    '                        addenda6.Valor = node2.Attributes.ItemOf("ENTREGA").Value
    '                        addenda6.Nivel = "1"
    '                        addenda6.Partida = "0"
    '                        add.Add(addenda6)
    '                    Else
    '                        addenda6.Valor = ""
    '                        addenda6.Nivel = "1"
    '                        add.Add(addenda6)
    '                    End If
    '                    If Not (node2.Attributes.ItemOf("CONSIGNATARIO") Is Nothing) Then

    '                        addenda7.Atributo = "CONSIGNATARIO"
    '                        addenda7.Valor = node2.Attributes.ItemOf("CONSIGNATARIO").Value
    '                        addenda7.Nivel = "1"
    '                        addenda7.Partida = "0"
    '                        add.Add(addenda7)
    '                    Else




    '                        addenda7.Valor = ""
    '                        addenda7.Nivel = "1"
    '                        add.Add(addenda7)

    '                    End If

    '                    If Not (node2.Attributes.ItemOf("AGENTE") Is Nothing) Then
    '                        addenda8.Atributo = "AGENTE"
    '                        addenda8.Valor = node2.Attributes.ItemOf("AGENTE").Value
    '                        addenda8.Nivel = "1"
    '                        addenda8.Partida = "0"
    '                        add.Add(addenda8)
    '                    Else
    '                        addenda8.Valor = ""
    '                        addenda8.Nivel = "1"
    '                        add.Add(addenda8)
    '                    End If

    '                    If Not (node2.Attributes.ItemOf("CODIGOREFERENCIA") Is Nothing) Then
    '                        addenda9.Atributo = "CODIGOREFERENCIA"
    '                        addenda9.Valor = node2.Attributes.ItemOf("CODIGOREFERENCIA").Value
    '                        addenda9.Nivel = "1"
    '                        addenda9.Partida = "0"
    '                        add.Add(addenda9)


    '                    Else
    '                        addenda9.Valor = ""
    '                        addenda9.Nivel = "1"
    '                        add.Add(addenda9)


    '                    End If

    '                    If Not (node2.Attributes.ItemOf("NOFACTURA") Is Nothing) Then

    '                        addenda10.Atributo = "NOFACTURA"
    '                        addenda10.Valor = node2.Attributes.ItemOf("NOFACTURA").Value
    '                        addenda10.Nivel = "1"
    '                        addenda10.Partida = "0"
    '                        add.Add(addenda10)


    '                    Else
    '                        addenda10.Valor = ""
    '                        addenda10.Nivel = "1"
    '                        add.Add(addenda10)

    '                    End If


    '                    If Not (node2.Attributes.ItemOf("TOTALBULTO") Is Nothing) Then
    '                        addenda11.Atributo = "TOTALBULTO"
    '                        addenda11.Valor = node2.Attributes.ItemOf("TOTALBULTO").Value
    '                        addenda11.Nivel = "1"
    '                        addenda11.Partida = "0"
    '                        add.Add(addenda11)
    '                    Else
    '                        addenda11.Valor = ""
    '                        addenda11.Nivel = "1"
    '                        add.Add(addenda11)
    '                    End If

    '                    If Not (node2.Attributes.ItemOf("TOTALKILOBULTO") Is Nothing) Then

    '                        addenda12.Atributo = "TOTALKILOBULTO"
    '                        addenda12.Valor = node2.Attributes.ItemOf("TOTALKILOBULTO").Value
    '                        addenda12.Nivel = "1"
    '                        addenda12.Partida = "0"
    '                        add.Add(addenda12)


    '                    Else
    '                        addenda12.Valor = ""
    '                        addenda12.Nivel = "1"
    '                        add.Add(addenda12)

    '                    End If


    '                    If Not (node2.Attributes.ItemOf("TOTALKILONETO") Is Nothing) Then
    '                        addenda13.Atributo = "TOTALKILONETO"
    '                        addenda13.Valor = node2.Attributes.ItemOf("TOTALKILONETO").Value
    '                        addenda13.Nivel = "1"
    '                        addenda13.Partida = "0"
    '                        add.Add(addenda13)
    '                    Else
    '                        addenda13.Valor = ""
    '                        addenda13.Nivel = "1"
    '                        add.Add(addenda13)
    '                    End If


    '                    If Not (node2.Attributes.ItemOf("BULTOTARIMA") Is Nothing) Then
    '                        addenda14.Atributo = "BULTOTARIMA"
    '                        addenda14.Valor = node2.Attributes.ItemOf("BULTOTARIMA").Value
    '                        addenda14.Nivel = "1"
    '                        addenda14.Partida = "0"
    '                        add.Add(addenda14)
    '                    Else
    '                        addenda14.Valor = ""
    '                        addenda14.Nivel = "1"
    '                        add.Add(addenda14)
    '                    End If

    '                    If Not (node2.Attributes.ItemOf("BULTOGRANEL") Is Nothing) Then
    '                        addenda15.Atributo = "BULTOGRANEL"
    '                        addenda15.Valor = node2.Attributes.ItemOf("BULTOGRANEL").Value
    '                        addenda15.Nivel = "1"
    '                        addenda15.Partida = "0"
    '                        add.Add(addenda15)
    '                    Else
    '                        addenda15.Valor = ""
    '                        addenda15.Nivel = "1"
    '                        add.Add(addenda15)
    '                    End If

    '                    If Not (node2.Attributes.ItemOf("FLETE") Is Nothing) Then
    '                        addenda16.Atributo = "FLETE"
    '                        addenda16.Valor = node2.Attributes.ItemOf("FLETE").Value
    '                        addenda16.Nivel = "1"
    '                        addenda16.Partida = "0"
    '                        add.Add(addenda16)
    '                    Else
    '                        addenda16.Valor = ""
    '                        addenda16.Nivel = "1"
    '                        add.Add(addenda16)
    '                    End If

    '                    If Not (node2.Attributes.ItemOf("TOTALFLETE") Is Nothing) Then
    '                        addenda17.Atributo = "TOTALFLETE"
    '                        addenda17.Valor = node2.Attributes.ItemOf("TOTALFLETE").Value
    '                        addenda17.Nivel = "1"
    '                        addenda17.Partida = "0"
    '                        add.Add(addenda17)
    '                    Else
    '                        addenda17.Valor = ""
    '                        addenda17.Nivel = "1"
    '                        add.Add(addenda17)
    '                    End If

    '                    If Not (node2.Attributes.ItemOf("TELEFONO") Is Nothing) Then
    '                        addenda18.Atributo = "TELEFONO"
    '                        addenda18.Valor = node2.Attributes.ItemOf("TELEFONO").Value
    '                        addenda18.Nivel = "1"
    '                        addenda18.Partida = "0"
    '                        add.Add(addenda18)
    '                    Else
    '                        addenda18.Valor = ""
    '                        addenda18.Nivel = "1"
    '                        add.Add(addenda18)
    '                    End If

    '                    If Not (node2.Attributes.ItemOf("PAGINAWEB") Is Nothing) Then
    '                        addenda19.Atributo = "PAGINAWEB"
    '                        addenda19.Valor = node2.Attributes.ItemOf("PAGINAWEB").Value
    '                        addenda19.Nivel = "1"
    '                        addenda19.Partida = "0"
    '                        add.Add(addenda19)
    '                    Else
    '                        addenda19.Valor = ""
    '                        addenda19.Nivel = "1"
    '                        add.Add(addenda19)
    '                    End If

    '                    If Not (node2.Attributes.ItemOf("CORREO") Is Nothing) Then
    '                        addenda20.Atributo = "CORREO"
    '                        addenda20.Valor = node2.Attributes.ItemOf("CORREO").Value
    '                        addenda20.Nivel = "1"
    '                        addenda20.Partida = "0"
    '                        add.Add(addenda20)
    '                    Else
    '                        addenda20.Valor = ""
    '                        addenda20.Nivel = "1"
    '                        add.Add(addenda20)
    '                    End If

    '                    If Not (node2.Attributes.ItemOf("SLOGAN") Is Nothing) Then
    '                        addenda21.Atributo = "SLOGAN"
    '                        addenda21.Valor = node2.Attributes.ItemOf("SLOGAN").Value
    '                        addenda21.Nivel = "1"
    '                        addenda21.Partida = "0"
    '                        add.Add(addenda21)
    '                    Else
    '                        addenda21.Valor = ""
    '                        addenda21.Nivel = "1"
    '                        add.Add(addenda21)
    '                    End If

    '                    If respuesta = False Then
    '                        addenda.Valor = ""
    '                        addenda2.Valor = ""
    '                        addenda3.Valor = ""
    '                        addenda4.Valor = ""
    '                        addenda5.Valor = ""
    '                        addenda6.Valor = ""
    '                        addenda7.Valor = ""
    '                        addenda8.Valor = ""
    '                        addenda9.Valor = ""
    '                        addenda10.Valor = ""
    '                        addenda11.Valor = ""
    '                        addenda12.Valor = ""
    '                        addenda13.Valor = ""
    '                        addenda14.Valor = ""
    '                        addenda15.Valor = ""
    '                        addenda16.Valor = ""
    '                        addenda17.Valor = ""
    '                    End If


    '                End If
    '            End If
    '        End If
    '        Return add
    '    Catch ex As Exception
    '        Return Nothing
    '    End Try

    'End Function
End Class

#Region "Addendas"
Partial Public Class Zarp
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property

    Private contrato As String = "CONTRATO"
    Private proyecto As String = "PROYECTO"
    Private claveProyecto As String = "CLAVE DE PROYECTO"
    Private ordenCompra As String = "ORDEN DE COMPRA"
    Private proyectoSap As String = "PROYECTO SAP"
    Private facturasRetenidas As String = "FACTURAS RETENIDAS"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attContrato = "Contrato"
    Private attProyecto = "Proyecto"
    Private attClaveProy = "Clave"
    Private attOrdenCompra = "OrdenCompra"
    Private attProyectoSap = "ProyectoSap"
    Private attFacturasRetenidas = "FacturasRetenidas"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Zarp: " + ex.Message, Resp)
            Return ""
        End Try
    End Function

    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case contrato
                    Case proyecto
                    Case claveProyecto
                    Case ordenCompra
                    Case proyectoSap
                    Case facturasRetenidas
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura de Addenda Zarp el valor del atributo, no cumple con las características", Resp)
                        respuesta = False
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Zarp: El nivel del layout no corresponde (1 ó 2)", Resp)
                    respuesta = False
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Zarp: Error en la validacion de estructura: " & ex.Message, Resp)
            Return False
        End Try
    End Function

    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Zarp")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case contrato
                        att = attContrato
                    Case proyecto
                        att = attProyecto
                    Case claveProyecto
                        att = attClaveProy
                    Case ordenCompra
                        att = attOrdenCompra
                    Case proyectoSap
                        att = attProyectoSap
                    Case facturasRetenidas
                        att = attFacturasRetenidas
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrió un error al generar la Addenda Zarp: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Servicio
    Private _estructura As List(Of Addenda_BE) = Nothing

    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property

    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private Partida As String = "PARTIDA"
    Private descripcion As String = "DESCRIPCION DE LA UNIDAD"
    Private matricula As String = "NO DE MATRICULA"
    Private economico As String = "NO ECONOMICO"
    Private km As String = "KM"
    Private nombreChofer As String = "NOMBRE DEL CHOFER"

    ''' <summary>
    ''' Variables para el nombre de los atributos en el xml
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attPartida = "Partida"
    Private attDescripcion = "Descripcion"
    Private attMatricula = "Matricula"
    Private attEconomico = "NoEconomico"
    Private attKm = "Km"
    Private attNombreChofer = "NombreChofer"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum
    ''' <summary>
    ''' Funcion principal la cual genera el nodo Addenda
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Servicio: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica del TXT de la addenda para SERVICIO
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error o  
    ''' que la estructura sea incorrecta</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case descripcion
                    Case matricula
                    Case km
                    Case economico
                    Case nombreChofer
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Servicio el valor del atributo, no cumple con las características", Resp)
                        respuesta = False
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Servicio: El nivel del layout no corresponde (1 ó 2)", Resp)
                    respuesta = False
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Servicio: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("SERVICIO")
        Try
            Dim att As String = ""
            Dim contador As Integer = 0
            Dim contador2 As Integer = 0
            Dim contadorpartida As Integer = 1
            Do While (contador2 < _estructura.Count)
                Dim partida As XmlElement = xml.CreateElement("PARTIDA")
                att = attPartida
                partida.Attributes.Append(xml.CreateAttribute(att))
                partida.Attributes(att).Value = _estructura(contador).Partida
                Do While (_estructura(contador).Partida = contadorpartida)
                    Select Case _estructura(contador).Atributo 'Seleccionamos que atributo es el que se va a ingresar
                        Case descripcion
                            att = attDescripcion
                        Case matricula
                            att = attMatricula
                        Case nombreChofer
                            att = attNombreChofer
                        Case economico
                            att = attEconomico
                        Case km
                            att = attKm
                    End Select
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = _estructura(contador).Valor
                    contador = contador + 1
                    If (contador = _estructura.Count) Then
                        contador = contador - 1
                        contadorpartida = contadorpartida + 1
                    End If
                Loop
                contadorpartida = contadorpartida + 1
                contador2 = contador + 1
                If (partida.Attributes.Count > 1) Then
                    elemento.AppendChild(partida)
                End If
            Loop
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Servicio: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Rest
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private propina As String = "PROPINA"
    Private ticket As String = "TICKET"
    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attPropina = "Propina"
    Private attTicket = "Ticket"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Rest: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case propina
                    Case ticket
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Rest el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Rest: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Rest: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Rest")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case propina
                        att = attPropina
                    Case ticket
                        att = attTicket
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Rest: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Docu
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private tel As String = "TEL"
    Private nocuenta As String = "NOCUENTA"
    Private vendedor As String = "VENDEDOR"
    Private nofactura As String = "NOFACTURA"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attTel = "Tel"
    Private attNoCuenta = "NoCuenta"
    Private attVendedor = "Vendedor"
    Private attNoFactura = "NoFactura"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Docu: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case tel
                    Case nocuenta
                    Case vendedor
                    Case nofactura
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Docu el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Docu: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Docu: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Docu")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case tel
                        att = attTel
                    Case nocuenta
                        att = attNoCuenta
                    Case vendedor
                        att = attVendedor
                    Case nofactura
                        att = attNoFactura
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Docu: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class CartaPorte
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private piloto As String = "PILOTO"
    Private placa As String = "PLACA"
    Private remitente As String = "REMITENTES"
    Private codigo As String = "CODIGO"
    Private destinatario As String = "DESTINATARIO"
    Private entregaEn As String = "ENTREGA"
    Private consignatario As String = "CONSIGNATARIO"
    Private agente As String = "AGENTE"
    Private CodigoReferencia As String = "CODIGOREFERENCIA"
    Private facturaNo As String = "NOFACTURA"
    Private totBultos As String = "TOTALBULTO"
    Private totKiloBulto As String = "TOTALKILOBULTO"
    Private totKiloNeto As String = "TOTALKILONETO"
    Private bultoTarima As String = "BULTOTARIMA"
    Private bultoGranel As String = "BULTOGRANEL"
    Private fletes As String = "FLETE"
    Private totFletes As String = "TOTALFLETE"
    Private telefono As String = "TELEFONO"
    Private pagina As String = "PAGINAWEB"
    Private correo As String = "CORREO"
    Private slogan As String = "SLOGAN"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attPiloto = "PILOTO"
    Private attPlaca = "PLACA"
    Private attRemitente As String = "REMITENTES"
    Private attCodigo As String = "CODIGO"
    Private attDestinatario As String = "DESTINATARIO"
    Private attEntregaEn As String = "ENTREGA"
    Private attConsignatario As String = "CONSIGNATARIO"
    Private attAgente As String = "AGENTE"
    Private attCodigoReferencia As String = "CODIGOREFERENCIA"
    Private attFacturaNo As String = "NOFACTURA"
    Private attTotBultos As String = "TOTALBULTO"
    Private attTotKiloBulto As String = "TOTALKILOBULTO"
    Private attTotKiloNeto As String = "TOTALKILONETO"
    Private attBultoTarima As String = "BULTOTARIMA"
    Private attBultoGranel As String = "BULTOGRANEL"
    Private attFletes As String = "FLETE"
    Private attTotFletes As String = "TOTALFLETE"
    Private attPagina As String = "PAGINAWEB"
    Private attCorreo As String = "CORREO"
    Private attSlogan As String = "SLOGAN"
    Private attTelefono As String = "TELEFONO"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            End If
            Return ""
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda CartaPorte: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case attPiloto
                    Case attPlaca
                    Case attRemitente
                    Case attCodigo
                    Case attDestinatario
                    Case attEntregaEn
                    Case attConsignatario
                    Case attAgente
                    Case attCodigoReferencia
                    Case attFacturaNo
                    Case attTotBultos
                    Case attTotKiloBulto
                    Case attTotKiloNeto
                    Case attBultoTarima
                    Case attBultoGranel
                    Case attFletes
                    Case attTotFletes
                    Case attCorreo
                    Case attTelefono
                    Case attPagina
                    Case attSlogan
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda CartaPorte el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda CartaPorte: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda CartaPorte: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("CartaPorte")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case piloto
                        att = attPiloto
                    Case placa
                        att = attPlaca
                    Case remitente
                        att = attRemitente
                    Case codigo
                        att = attCodigo
                    Case destinatario
                        att = attDestinatario
                    Case entregaEn
                        att = attEntregaEn
                    Case consignatario
                        att = attConsignatario
                    Case agente
                        att = attAgente
                    Case CodigoReferencia
                        att = attCodigoReferencia
                    Case facturaNo
                        att = attFacturaNo
                    Case totBultos
                        att = attTotBultos
                    Case totKiloBulto
                        att = attTotKiloBulto
                    Case totKiloNeto
                        att = attTotKiloNeto
                    Case bultoTarima
                        att = attBultoTarima
                    Case bultoGranel
                        att = attBultoGranel
                    Case fletes
                        att = attFletes
                    Case totFletes
                        att = attTotFletes
                    Case telefono
                        att = attTelefono
                    Case pagina
                        att = attPagina
                    Case correo
                        att = attCorreo
                    Case slogan
                        att = attSlogan

                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda CartaPorte: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Cables
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private facturado As String = "FACTURADO"
    Private proveedor As String = "PROVEEDOR"
    Private pedido As String = "PEDIDO"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attFacturado = "Facturado"
    Private attProveedor = "Proveedor"
    Private attPedido = "Pedido"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Cables: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case facturado
                    Case proveedor
                    Case pedido
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Cables el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Cables: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Cables: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Cables")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case facturado
                        att = attFacturado
                    Case proveedor
                        att = attProveedor
                    Case pedido
                        att = attPedido
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Cables: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Acuario
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private notas As String = "NOTAS"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attNotas = "Notas"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Acuario: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case notas
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Acuario el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Acuario: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Acuario: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Acuario")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case notas
                        att = attNotas
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Acuario: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Rafagas
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private observaciones As String = "OBSERVACIONES"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attObservaciones = "Observaciones"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Rafagas: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case observaciones
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Rafagas el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Rafagas: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Rafagas: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Rafagas")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case observaciones
                        att = attObservaciones
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Rafagas: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Cfd
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private observaciones As String = "OBSERVACIONES"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attObservaciones = "Observaciones"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Cfd: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case observaciones
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Cfd el valor del atributo, no cumple con las características", Resp)
                End Select
                If (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                Else
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Cfd: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Cfd: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Cfd")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case observaciones
                        att = attObservaciones
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Cfd: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Microsip2000
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private subtotaltasa0 As String = "SUBTOTALTASA0"
    Private subtotaltasa16 As String = "SUBTOTALTASA16"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attSubtotaltasa0 = "Subtotaltasa0"
    Private attSubtotaltasa16 = "Subtotaltasa16"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Microsip2000: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case subtotaltasa0
                    Case subtotaltasa16
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Microsip2000 el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Microsip2000: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Microsip2000: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Microsip2000")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case subtotaltasa0
                        att = attSubtotaltasa0
                    Case subtotaltasa16
                        att = attSubtotaltasa16
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Microsip2000: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class GasCristobal
    Private _estructura As List(Of Addenda_BE) = Nothing

    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property

    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    '''Private Partida As String = "PARTIDA"
    Private campo1 As String = "CAMPO1"
    Private campo2 As String = "CAMPO2"
    Private campo3 As String = "CAMPO3"
    Private campo4 As String = "CAMPO4"

    ''' <summary>
    ''' Variables para el nombre de los atributos en el xml
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    '''Private attPartida = "Partida"
    Private attCampo1 = "Campo1"
    Private attCampo2 = "Campo2"
    Private attCampo3 = "Campo3"
    Private attCampo4 = "Campo4"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum
    ''' <summary>
    ''' Funcion principal la cual genera el nodo Addenda
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda GasCristobal: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica del TXT de la addenda para SERVICIO
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error o  
    ''' que la estructura sea incorrecta</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case campo1
                    Case campo2
                    Case campo3
                    Case campo4
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda GasCristobal el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda GasCristobal: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda GasCristobal: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("GASCRISTOBAL")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case campo1
                        att = attCampo1
                    Case campo2
                        att = attCampo2
                    Case campo3
                        att = attCampo3
                    Case campo4
                        att = attCampo4
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda GasCristobal: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Acocota
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private telefono_cliente As String = "TELEFONOCLIENTE"
    Private entregado As String = "ENTREGADO"
    Private telefono_entregado As String = "TELEFONOENTREGADO"
    Private cliente As String = "CLIENTE"
    Private vendedor As String = "VENDEDOR"
    Private pedido As String = "PEDIDO"
    Private entrega As String = "ENTREGA"
    Private textofijo As String = "TEXTOFIJO"
    Private totalcajas As String = "TOTALCAJAS"
    Private totalunidades As String = "TOTALUNIDADES"
    Private foliosfact As String = "FOLIOSFACT"

    Private precio_sugerido As String = "PRECIOSUGERIDO"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private atttelefono_cliente As String = "Telefonocliente"
    Private attentregado As String = "Entregado"
    Private atttelefono_entregado As String = "Telefonoentregado"
    Private attcliente As String = "Cliente"
    Private attvendedor As String = "Vendedor"
    Private attpedido As String = "Pedido"
    Private attentrega As String = "Entrega"
    Private atttextofijo As String = "Textofijo"
    Private atttotalcajas As String = "Totalcajas"
    Private atttotalunidades As String = "Totalunidades"
    Private attfoliosfact As String = "Foliosfact"

    Private attprecio_sugerido As String = "Preciosugerido"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Acocota: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case telefono_cliente
                    Case entregado
                    Case telefono_entregado
                    Case cliente
                    Case vendedor
                    Case pedido
                    Case entrega
                    Case textofijo
                    Case totalcajas
                    Case totalunidades
                    Case foliosfact
                    Case precio_sugerido
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Acocota el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Acocota: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Acocota: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Acocota")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case telefono_cliente
                        att = atttelefono_cliente
                    Case entregado
                        att = attentregado
                    Case telefono_entregado
                        att = atttelefono_entregado
                    Case cliente
                        att = attcliente
                    Case vendedor
                        att = attvendedor
                    Case pedido
                        att = attpedido
                    Case entrega
                        att = attentrega
                    Case textofijo
                        att = atttextofijo
                    Case totalcajas
                        att = atttotalcajas
                    Case totalunidades
                        att = atttotalunidades
                    Case foliosfact
                        att = attfoliosfact
                    Case precio_sugerido
                        att = attprecio_sugerido
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Acocota: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Addenda724
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private fechaOperacion As String = "FECHAOPERACION"
    Private ticket As String = "TICKET"
    Private observaciones As String = "OBSERVACIONES"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attFechaOperacion = "FechaOperacion"
    Private attTicket = "Ticket"
    Private attObservaciones = "Observaciones"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda 724: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case fechaOperacion
                    Case ticket
                    Case observaciones
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda 724 el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda 724: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda 724: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Addenda724")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case fechaOperacion
                        att = attFechaOperacion
                    Case ticket
                        att = attTicket
                    Case observaciones
                        att = attObservaciones
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda 724: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Anahuac
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private vendedor As String = "VENDEDOR"
    Private anticipo As String = "ANTICIPO"
    Private observaciones As String = "OBSERVACIONES"

    Private observacion As String = "OBSERVACION"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attvendedor As String = "Vendedor"
    Private attanticipo As String = "Anticipo"
    Private attobservaciones As String = "Observaciones"

    Private attobservacion As String = "Observacion"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Anahuac: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case vendedor
                    Case anticipo
                    Case observaciones
                    Case observacion
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Anahuac el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Anahuac: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Anahuac: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Anahuac")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case vendedor
                        att = attvendedor
                    Case anticipo
                        att = attanticipo
                    Case observaciones
                        att = attobservaciones
                    Case observacion
                        att = attobservacion
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml

        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Anahuac: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class PlasticDesigns
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private observaciones As String = "OBSERVACIONES"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attObservaciones = "Observaciones"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda PlasticDesigns: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case observaciones
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda PlasticDesigns el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda PlasticDesigns: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda PlasticDesigns: Error en la validación de estructura: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("PlasticDesigns")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case observaciones
                        att = attObservaciones
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda PlasticDesigns: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class TractoCamionera
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private comentarios As String = "COMENTARIOS"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attComentarios = "Comentarios"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Tractocamionera: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case comentarios
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Tractocamionera el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Tractocamionera: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Tractocamionera Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Tractocamionera")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case comentarios
                        att = attComentarios
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Tractocamionera: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Librado
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private clavecliente As String = "CLAVECLIENTE"
    Private vencimiento As String = "VENCIMIENTO"
    Private vendedor As String = "VENDEDOR"
    Private maniobras As String = "MANIOBRAS"
    Private subtotal1 As String = "SUBTOTAL1"

    Private nopartida As String = "NOPARTIDA"
    Private codigo As String = "CODIGO"
    Private clavealterna As String = "CLAVEALTERNA"
    Private marca As String = "MARCA"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 

    Private attclavecliente As String = "Clavecliente"
    Private attvencimiento As String = "Vencimiento"
    Private attvendedor As String = "Vendedor"
    Private attmaniobras As String = "Maniobras"
    Private attsubtotal1 As String = "Subtotal1"

    Private attnopartida As String = "Nopartida"
    Private attcodigo As String = "Codigo"
    Private attclavealterna As String = "Clavealterna"
    Private attmarca As String = "Marca"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Librado: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case clavecliente
                    Case vencimiento
                    Case vendedor
                    Case maniobras
                    Case subtotal1
                    Case nopartida
                    Case codigo
                    Case clavealterna
                    Case marca
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Librado el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Librado: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Librado: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Librado")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case clavecliente
                        att = attclavecliente
                    Case vencimiento
                        att = attvencimiento
                    Case vendedor
                        att = attvendedor
                    Case maniobras
                        att = attmaniobras
                    Case subtotal1
                        att = attsubtotal1
                    Case nopartida
                        att = attnopartida
                    Case codigo
                        att = attcodigo
                    Case clavealterna
                        att = attclavealterna
                    Case marca
                        att = attmarca
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml

        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Librado: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Rolans
    Private _estructura As List(Of Addenda_BE) = Nothing

    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property

    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    '''Private Partida As String = "PARTIDA"
    Private agentedeventas As String = "AGENTEDEVENTAS"
    Private ordendecompra As String = "ORDENDECOMPRA"
    Private noproveedor As String = "NOPROVEEDOR"
    Private infoadicional As String = "INFOADICIONAL"


    ''' <summary>
    ''' Variables para el nombre de los atributos en el xml
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    '''Private attPartida = "Partida"
    Private attAgentedeventas = "Agentedeventas"
    Private attOrdendecompra = "Ordendecompra"
    Private attNoproveedor = "Noproveedor"
    Private attInfoadicional = "Infoadicional"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum
    ''' <summary>
    ''' Funcion principal la cual genera el nodo Addenda
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Rolans: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica del TXT de la addenda para SERVICIO
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error o  
    ''' que la estructura sea incorrecta</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case agentedeventas
                    Case ordendecompra
                    Case noproveedor
                    Case infoadicional
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Rolans el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Rolans: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Rolans: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Rolans")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case agentedeventas
                        att = attAgentedeventas
                    Case ordendecompra
                        att = attOrdendecompra
                    Case noproveedor
                        att = attNoproveedor
                    Case infoadicional
                        att = attInfoadicional
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Rolans: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Dikysa
    Private _estructura As List(Of Addenda_BE) = Nothing

    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property

    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    '''Private Partida As String = "PARTIDA"
    Private noorden As String = "NOORDEN"
    Private pedido As String = "PEDIDO"
    Private vendedor As String = "VENDEDOR"
    Private requisicion As String = "REQUISICION"
    Private clavecliente As String = "CLAVECLIENTE"
    Private telefonocliente As String = "TELEFONOCLIENTE"
    Private faxcliente As String = "FAXCLIENTE"
    Private enviara As String = "ENVIARA"
    Private observacionesd As String = "OBSERVACIONESD"

    Private lote As String = "LOTE"
    Private caducidad As String = "CADUCIDAD"
    Private observacionesp As String = "OBSERVACIONESP"
    Private noserie As String = "NOSERIE"

    ''' <summary>
    ''' Variables para el nombre de los atributos en el xml
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    '''Private attPartida = "Partida"
    Private attNoorden = "Noorden"
    Private attPedido = "Pedido"
    Private attVendedor = "Vendedor"
    Private attRequisicion = "Requisicion"
    Private attClavecliente = "Clavecliente"
    Private attTelefonocliente = "Telefonocliente"
    Private attFaxcliente = "Faxcliente"
    Private attEnviara = "Enviara"
    Private attObservacionesd = "Observacionesd"

    Private attLote = "Lote"
    Private attCaducidad = "Caducidad"
    Private attObservacionesp = "Observacionesp"
    Private attNoserie = "Noserie"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum
    ''' <summary>
    ''' Funcion principal la cual genera el nodo Addenda
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Dikysa: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica del TXT de la addenda para SERVICIO
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error o  
    ''' que la estructura sea incorrecta</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case noorden
                    Case pedido
                    Case vendedor
                    Case requisicion
                    Case clavecliente
                    Case telefonocliente
                    Case faxcliente
                    Case enviara
                    Case observacionesd
                    Case lote
                    Case caducidad
                    Case observacionesp
                    Case noserie
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Dikysa el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Dikysa: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Dikysa: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function

    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("DIKYSA")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case noorden
                        att = attNoorden
                    Case pedido
                        att = attPedido
                    Case vendedor
                        att = attVendedor
                    Case requisicion
                        att = attRequisicion
                    Case clavecliente
                        att = attClavecliente
                    Case telefonocliente
                        att = attTelefonocliente
                    Case faxcliente
                        att = attFaxcliente
                    Case enviara
                        att = attEnviara
                    Case observacionesd
                        att = attObservacionesd
                    Case lote
                        att = attLote
                    Case caducidad
                        att = attCaducidad
                    Case observacionesp
                        att = attObservacionesp
                    Case noserie
                        att = attNoserie
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml

        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Dikysa: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Energetico
    Private _estructura As List(Of Addenda_BE) = Nothing

    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property

    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private clave As String = "CLAVE"
    Private tickets As String = "TICKETS"
    ''' <summary>
    ''' Variables para el nombre de los atributos en el xml
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attClave = "Clave"
    Private attTickets = "Tickets"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum
    ''' <summary>
    ''' Funcion principal la cual genera el nodo Addenda
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Energetico: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica del TXT de la addenda para SERVICIO
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error o  
    ''' que la estructura sea incorrecta</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case clave
                    Case tickets
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Energetico el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Energetico: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Energetico: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("ENERGETICO")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case clave
                        att = attClave
                    Case tickets
                        att = attTickets
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Energetico: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

'Partial Public Class MasFactura
'    Private _estructura As List(Of Addenda_BE) = Nothing
'    Private AddMasFactura As MasFactur.AddMasFactura.DocumentoFacturaMasFactura
'    Public Property Estructura() As List(Of Addenda_BE)
'        Get
'            Return _estructura
'        End Get
'        Set(ByVal value As List(Of Addenda_BE))
'            _estructura = value
'        End Set
'    End Property
'    ''' <summary>
'    ''' Atributos de estructura, es la forma en como deben venir la informacion
'    ''' De lo contrario es informacion errónea
'    ''' </summary>
'    ''' <remarks></remarks>
'    Private versio As String = "Versio"
'    Private tradpp As String = "Tradpp"
'    Private ctppro As String = "Ctppro"
'    Private numfol As String = "Numfol"
'    Private serfol As String = "Serfol"
'    Private fecexp As String = "Fecexp"
'    Private noapro As String = "Noapro"
'    Private forpag As String = "Forpag"
'    Private metpag As String = "Metpag"
'    Private numche As String = "Numche"
'    Private tipdoc As String = "Tipdoc"
'    Private nomdoc As String = "Nomdoc"
'    Private fundoc As String = "Fundoc"
'    Private tipmon As String = "Tipmon"
'    Private tipcam As String = "Tipcam"
'    Private diapag As String = "Diapag"
'    Private pdppag As String = "Pdppag"
'    Private mdppag As String = "Mdppag"
'    Private numeoc As String = "Numeoc"
'    Private fechoc As String = "Fechoc"
'    Private notas1 As String = "Notas1"
'    Private notas2 As String = "Notas2"
'    Private notas3 As String = "Notas3"
'    Private numdpt As String = "Numdpt"
'    Private nomdpt As String = "Nomdpt"
'    Private feccon As String = "Feccon"
'    Private contra As String = "Contra"
'    Private tda_contra As String = "Tda_contra"
'    Private po_numeoc As String = "Po_numeoc"
'    Private ieps_id As String = "Ieps_id"
'    Private reffac As String = "Reffac"
'    Private hojneg As String = "Hojneg"
'    Private numcli As String = "Numcli"
'    Private flete As String = "Flete"
'    Private rfcemi As String = "Rfcemi"
'    Private nomemi As String = "Nomemi"
'    Private eanemi As String = "Eanemi"
'    Private numemi As String = "Numemi"
'    Private calemi As String = "Calemi"
'    Private nexemi As String = "Nexemi"
'    Private ninemi As String = "Ninemi"
'    Private colemi As String = "Colemi"
'    Private locemi As String = "Locemi"
'    Private refemi As String = "Refemi"
'    Private munemi As String = "Munemi"
'    Private estemi As String = "Estemi"
'    Private paiemi As String = "Paiemi"
'    Private codemi As String = "Codemi"
'    Private mailemi As String = "Mailemi"
'    Private ri_emi As String = "Ri_emi"
'    Private calexp As String = "Calexp"
'    Private nexexp As String = "Nexexp"
'    Private ninexp As String = "Ninexp"
'    Private colexp As String = "Colexp"
'    Private locexp As String = "Locexp"
'    Private refexp As String = "Refexp"
'    Private munexp As String = "Munexp"
'    Private estexp As String = "Estexp"
'    Private paiexp As String = "Paiexp"
'    Private codexp As String = "Codexp"
'    Private eanexp As String = "Eanexp"
'    Private rfcrec As String = "Rfcrec"
'    Private nomrec As String = "Nomrec"
'    Private calrec As String = "Calrec"

'    ''' <summary>
'    ''' Variables para el nombre de los atributos
'    ''' </summary>
'    ''' <remarks></remarks>
'    ''' 
'    Private attversio As String = "Versio"
'    Private atttradpp As String = "Tradpp"
'    Private attctppro As String = "Ctppro"
'    Private attnumfol As String = "Numfol"
'    Private attserfol As String = "Serfol"
'    Private attfecexp As String = "Fecexp"
'    Private attnoapro As String = "Noapro"
'    Private attforpag As String = "Forpag"
'    Private attmetpag As String = "Metpag"
'    Private attnumche As String = "Numche"
'    Private atttipdoc As String = "Tipdoc"
'    Private attnomdoc As String = "Nomdoc"
'    Private attfundoc As String = "Fundoc"
'    Private atttipmon As String = "Tipmon"
'    Private atttipcam As String = "Tipcam"
'    Private attdiapag As String = "Diapag"
'    Private attpdppag As String = "Pdppag"
'    Private attmdppag As String = "Mdppag"
'    Private attnumeoc As String = "Numeoc"
'    Private attfechoc As String = "Fechoc"
'    Private attnotas1 As String = "Notas1"
'    Private attnotas2 As String = "Notas2"
'    Private attnotas3 As String = "Notas3"
'    Private attnumdpt As String = "Numdpt"
'    Private attnomdpt As String = "Nomdpt"
'    Private attfeccon As String = "Feccon"
'    Private attcontra As String = "Contra"
'    Private atttda_contra As String = "Tda_contra"
'    Private attpo_numeoc As String = "Po_numeoc"
'    Private attieps_id As String = "Ieps_id"
'    Private attreffac As String = "Reffac"
'    Private atthojneg As String = "Hojneg"
'    Private attnumcli As String = "Numcli"
'    Private attflete As String = "Flete"
'    Private attrfcemi As String = "Rfcemi"
'    Private attnomemi As String = "Nonemi"
'    Private atteanemi As String = "Eanemi"
'    Private attnumemi As String = "Numemi"
'    Private attcalemi As String = "Calemi"
'    Private attnexemi As String = "Nexemi"
'    Private attninemi As String = "Ninemi"
'    Private attcolemi As String = "Colemi"
'    Private attlocemi As String = "Locemi"
'    Private attrefemi As String = "Refemi"
'    Private attmunemi As String = "Munemi"
'    Private attestemi As String = "Estemi"
'    Private attpaiemi As String = "Paiemi"
'    Private attcodemi As String = "Codemi"
'    Private attmailemi As String = "Mailemi"
'    Private attri_emi As String = "Ri_emi"
'    Private attcalexp As String = "Calexp"
'    Private attnexexp As String = "Nexexp"
'    Private attninexp As String = "Ninexp"

'    Private Enum nivel
'        numero = 1
'        numero2 = 2
'    End Enum

'    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
'        Dim xml As XmlDocument = New XmlDocument()
'        Try
'            LlenaEstructura(Resp)
'            If (isValid_Encabezado(Resp)) Then
'                xml = creaXML(Resp)
'                Return xml.InnerXml
'            Else
'                Return ""
'            End If
'        Catch ex As Exception
'            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda MASFACTURA: " + ex.Message, Resp)
'            Return ""
'        End Try
'    End Function

'    Public Function isValid_Encabezado(ByRef Resp As List(Of RespuestaPremium)) As Boolean
'        Dim fecha As DateTime = DateTime.Now()

'        'DATOS GENERALES
'        If (Me.AddMasFactura.Versio = "") Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "Indique la Versión.", Resp)
'        ElseIf (Me.AddMasFactura.Versio <> "1.0") Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "La Versión es incorrecta, debe ser 1.0.", Resp)
'        End If

'        If (Me.AddMasFactura.Tradpp = "") Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "Indique el Id Proveedor.", Resp)
'        ElseIf (Me.AddMasFactura.Tradpp.Length <> 13) Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "El Id Proveedor debe ser de longitud 13.", Resp)
'        End If

'        If (Me.AddMasFactura.Ctppro = "") Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "Indique el Calif. Proveedor.", Resp)
'        ElseIf (Me.AddMasFactura.Ctppro.Length <> 2) Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "El Calif Proveedor debe ser de longitud 2.", Resp)
'        ElseIf Not (IsNumeric(Me.AddMasFactura.Ctppro)) Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "El Calif Proveedor debe ser numérico.", Resp)
'        End If

'        If (Me.AddMasFactura.Numfol = "") Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "Indique el Folio", Resp)
'        ElseIf Not (IsNumeric(Me.AddMasFactura.Numfol)) Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "El Folio debe ser numérico.", Resp)
'        End If

'        If (Me.AddMasFactura.Fecexp = "") Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "Indique la Fecha de Expedición.", Resp)
'        Else
'            Try
'                Convert.ToDateTime(Me.AddMasFactura.Fecexp)
'            Catch ex As Exception
'                ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "La Fecha de Expedición no tiene un formato correcto.", Resp)
'            End Try
'        End If

'        If (Me.AddMasFactura.Noapro = "") Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "Indique el No. Aprob.", Resp)
'        Else
'            If Not (IsNumeric(Me.AddMasFactura.Noapro)) Then
'                ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "El No. Aprob. debe ser numérico.", Resp)
'            End If
'        End If

'        If (Me.AddMasFactura.Forpag = "") Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "Indique la Forma de Pago.", Resp)
'        End If

'        If (Me.AddMasFactura.Tipdoc <> "") Then
'            If (Me.AddMasFactura.Tipdoc.Length <> 1) Then
'                ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "El Tipo de Documento debe ser de longitud 1.", Resp)
'            ElseIf Not (IsNumeric(Me.AddMasFactura.Tipdoc)) Then
'                ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "El Tipo de Documento debe ser numérico.", Resp)
'            End If
'        End If

'        If (Me.AddMasFactura.Tipmon = "") Then
'            ValidaCFDi.AgregaRespuesta("03", 3, "Error de Validación MASFACTURA: " + "Indique la Moneda.", Resp)
'        End If

'    End Function
'    ''' <summary>
'    ''' Función que valida la estructura especifica de la addenda para ZARP
'    ''' </summary>
'    ''' <returns>True en caso de tener una respuesta correcta, </returns>
'    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
'    ''' <remarks></remarks>
'    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
'        Dim respuesta As Boolean = True
'        Try
'            For Each add As Addenda_BE In _estructura
'                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
'                    Case versio
'                    Case tradpp
'                    Case ctppro
'                    Case numfol
'                    Case serfol
'                    Case Else
'                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda MASFACTURA el valor del atributo, no cumple con las características", Resp)
'                End Select
'                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
'                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda MASFACTURA: El nivel del layout no corresponde (1 ó 2)", Resp)
'                End If
'            Next
'            Return respuesta
'        Catch ex As Exception
'            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda MASFACTURA: Error en la validación de estructura: " + ex.Message, Resp)
'            Return False
'        End Try

'    End Function
'    Private Sub LlenaEstructura(ByRef Resp As List(Of RespuestaPremium))
'        AddMasFactura = New MasFactur.AddMasFactura.DocumentoFacturaMasFactura()
'        Try
'            For Each add As Addenda_BE In _estructura
'                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
'                    Case versio
'                        AddMasFactura.Versio = add.Valor
'                    Case tradpp
'                        AddMasFactura.Tradpp = add.Valor
'                    Case ctppro
'                        AddMasFactura.Ctppro = add.Valor
'                    Case numfol
'                        AddMasFactura.Numfol = add.Valor
'                    Case serfol
'                        AddMasFactura.Serfol = add.Valor
'                    Case fecexp
'                        AddMasFactura.Fecexp = add.Valor
'                    Case noapro
'                        AddMasFactura.Noapro = add.Valor
'                    Case forpag
'                        AddMasFactura.Forpag = add.Valor
'                    Case metpag
'                        AddMasFactura.Metpag = add.Valor
'                    Case numche
'                        AddMasFactura.Numche = add.Valor
'                    Case tipdoc
'                        AddMasFactura.Tipdoc = add.Valor
'                    Case nomdoc
'                        AddMasFactura.Nomdoc = add.Valor
'                    Case fundoc
'                        AddMasFactura.Fundoc = add.Valor
'                    Case tipmon
'                        AddMasFactura.Tipmon = add.Valor
'                    Case tipcam
'                        AddMasFactura.Tipcam = add.Valor
'                    Case diapag
'                        AddMasFactura.Diapag = add.Valor
'                    Case pdppag
'                        AddMasFactura.Pdppag = add.Valor
'                    Case mdppag
'                        AddMasFactura.Mdppag = add.Valor
'                    Case numeoc
'                        AddMasFactura.Numeoc = add.Valor
'                    Case fechoc
'                        AddMasFactura.Fechoc = add.Valor
'                    Case notas1
'                        AddMasFactura.Notas1 = add.Valor
'                    Case notas2
'                        AddMasFactura.Notas2 = add.Valor
'                    Case notas3
'                        AddMasFactura.Notas3 = add.Valor
'                    Case numdpt
'                        AddMasFactura.Numdpt = add.Valor
'                    Case nomdpt
'                        AddMasFactura.Nomdpt = add.Valor
'                    Case feccon
'                        AddMasFactura.Feccon = add.Valor
'                    Case contra
'                        AddMasFactura.Contra = add.Valor
'                    Case tda_contra
'                        AddMasFactura.Tda_contra = add.Valor
'                    Case po_numeoc
'                        AddMasFactura.Po_numeoc = add.Valor
'                    Case ieps_id
'                        AddMasFactura.Ieps_id = add.Valor
'                    Case reffac
'                        AddMasFactura.Reffac = add.Valor
'                    Case hojneg
'                        AddMasFactura.Hojneg = add.Valor
'                    Case numcli
'                        AddMasFactura.Numcli = add.Valor
'                    Case flete
'                        AddMasFactura.Flete = add.Valor
'                    Case rfcemi
'                        AddMasFactura.Rfcemi = add.Valor
'                    Case nomemi
'                        AddMasFactura.Nomemi = add.Valor
'                    Case eanemi
'                        AddMasFactura.Eanemi = add.Valor
'                    Case numemi
'                        AddMasFactura.Numemi = add.Valor
'                    Case calemi
'                        AddMasFactura.Calemi = add.Valor
'                    Case nexemi
'                        AddMasFactura.Nexemi = add.Valor
'                    Case ninemi
'                        AddMasFactura.Ninemi = add.Valor
'                    Case colemi
'                        AddMasFactura.Colemi = add.Valor
'                    Case locemi
'                        AddMasFactura.Locemi = add.Valor
'                    Case refemi
'                        AddMasFactura.Refemi = add.Valor
'                    Case munemi
'                        AddMasFactura.Munemi = add.Valor
'                    Case estemi
'                        AddMasFactura.Estemi = add.Valor
'                    Case paiemi
'                        AddMasFactura.Paiemi = add.Valor
'                    Case codemi
'                        AddMasFactura.Codemi = add.Valor
'                    Case mailemi
'                        AddMasFactura.Mailemi = add.Valor
'                    Case ri_emi
'                        AddMasFactura.Ri_emi = add.Valor
'                    Case calexp
'                        AddMasFactura.Calexp = add.Valor
'                    Case nexexp
'                        AddMasFactura.Nexexp = add.Valor
'                    Case ninexp
'                        AddMasFactura.Ninexp = add.Valor
'                    Case Else
'                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda MASFACTURA el valor del atributo " + add.Atributo + ", no cumple con las características", Resp)
'                End Select
'                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
'                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda MASFACTURA: El nivel del layout no corresponde (1 ó 2)", Resp)
'                End If
'            Next
'        Catch ex As Exception
'            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda MASFACTURA: Error en la validación de estructura: " + ex.Message, Resp)
'        End Try
'    End Sub

'    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
'        Dim xmlAddenda As XmlDocument = New XmlDocument()
'        'Addenda
'        Dim encabezadoNd As XmlNode = xmlAddenda.CreateElement("MASFACTURA2")
'        xmlAddenda.AppendChild(encabezadoNd)
'        Try
'            'Elemento Padre De Addenda
'            'Dim ENC As XmlNode = xmlAddenda.CreateElement("MASFACTURA2")
'            'encabezadoNd.AppendChild(ENC)
'            'ENCABEZADO
'            Dim ENCAB As XmlNode = xmlAddenda.CreateElement("ENCAB")

'            'DATOS GENERALES

'            IntegraNodo(ENCAB, xmlAddenda, AddMasFactura.Versio, "VERSIO")
'            IntegraNodo(ENCAB, xmlAddenda, AddMasFactura.Tradpp, "TRADPP")
'            IntegraNodo(ENCAB, xmlAddenda, AddMasFactura.Ctppro, "CTPPRO")
'            IntegraNodo(ENCAB, xmlAddenda, AddMasFactura.Numfol, "NUMFOL")
'            If (AddMasFactura.Serfol <> "") Then
'                IntegraNodo(ENCAB, xmlAddenda, AddMasFactura.Serfol, "SERFOL")
'            End If
'            encabezadoNd.AppendChild(ENCAB)

'            Return xmlAddenda

'        Catch ex As Exception
'            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda MASFACTURA: " + ex.Message, Resp)
'            Return Nothing
'        End Try
'    End Function

'    Private Sub IntegraNodo(ByRef Nodo As XmlNode, ByRef DocXml As XmlDocument, ByVal Val As String, _
'                            ByVal At As String)
'        Dim xmlAtt As XmlAttribute
'        Dim Valor As XmlText
'        Try
'            Dim NodGenerico As XmlNode = DocXml.CreateElement("NEMONICO")
'            xmlAtt = DocXml.CreateAttribute("nombre")
'            xmlAtt.Value = At
'            NodGenerico.Attributes.Append(xmlAtt)

'            Valor = DocXml.CreateTextNode(Val)
'            NodGenerico.AppendChild(Valor)
'            Nodo.AppendChild(NodGenerico)
'        Catch ex As Exception

'        End Try
'    End Sub
'End Class

Partial Public Class Atcagro
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private referencia As String = "REFERENCIA"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attReferencia = "Referencia"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Atcagro: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case referencia
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Atcagro el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Atcagro: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Atcagro: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Atcagro")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case referencia
                        att = attReferencia
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda AtcAgro: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Cholulteca
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private propina As String = "PROPINA"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attPropina = "Propina"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Cholulteca: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case propina
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Cholulteca el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Cholulteca: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Cholulteca: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Cholulteca")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case propina
                        att = attPropina
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Cholulteca: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Gertrudis
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private codigo As String = "CODIGO"
    Private contacto As String = "CONTACTO"
    Private vendedor As String = "VENDEDOR"
    Private descripcion As String = "DESCRIPCION"
    Private descripcion2 As String = "DESCRIPCION2"
    Private descuento As String = "DESCUENTO"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attcodigo As String = "Codigo"
    Private attcontacto As String = "Contacto"
    Private attvendedor As String = "Vendedor"
    Private attdescripcion As String = "Descripcion"
    Private attdescripcion2 As String = "Descripcion2"
    Private attdescuento As String = "Descuento"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Gertrudis: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case codigo
                    Case contacto
                    Case vendedor
                    Case descripcion
                    Case descripcion2
                    Case descuento
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Gertrudis el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Gertrudis: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Gertrudis: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Gertrudis")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case codigo
                        att = attcodigo
                    Case contacto
                        att = attcontacto
                    Case vendedor
                        att = attvendedor
                    Case descripcion
                        att = attdescripcion
                    Case descripcion2
                        att = attdescripcion2
                    Case descuento
                        att = attdescuento
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml

        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Gertrudis: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Viaunom
    Private _estructura As List(Of Addenda_BE) = Nothing

    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property

    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private codcliente As String = "CODCLIENTE"
    Private calle As String = "CALLE"
    Private colonia As String = "COLONIA"
    Private ciudad As String = "CIUDAD"
    Private estado As String = "ESTADO"
    Private cp As String = "CP"
    Private pedido As String = "PEDIDO"
    Private ordencompra As String = "ORDENCOMPRA"
    Private proveedor As String = "PROVEEDOR"
    Private vendedor As String = "VENDEDOR"
    Private condpago As String = "CONDPAGO"
    Private vencimiento As String = "VENCIMIENTO"
    Private totalpares As String = "TOTALPARES"
    Private totalcajas As String = "TOTALCAJAS"
    Private observaciones As String = "OBSERVACIONES"
    Private viaembarque As String = "VIAEMBARQUE"

    Private nocaja As String = "NOCAJA"

    ''' <summary>
    ''' Variables para el nombre de los atributos en el xml
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attCodcliente = "Codcliente"
    Private attCalle = "Calle"
    Private attColonia = "Colonia"
    Private attCiudad = "Ciudad"
    Private attEstado = "Estado"
    Private attCp = "Cp"
    Private attPedido = "Pedido"
    Private attOrdencompra = "Ordencompra"
    Private attProveedor = "Proveedor"
    Private attVendedor = "Vendedor"
    Private attCondpago = "Condpago"
    Private attVencimiento = "Vencimiento"
    Private attTotalpares = "Totalpares"
    Private attTotalcajas = "Totalcajas"
    Private attObservaciones = "Observaciones"
    Private attViaembarque = "Viaembarque"

    Private attNocaja = "Nocaja"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum
    ''' <summary>
    ''' Funcion principal la cual genera el nodo Addenda
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Viaunom: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica del TXT de la addenda para SERVICIO
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error o  
    ''' que la estructura sea incorrecta</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case codcliente
                    Case calle
                    Case colonia
                    Case ciudad
                    Case estado
                    Case cp
                    Case pedido
                    Case ordencompra
                    Case proveedor
                    Case vendedor
                    Case condpago
                    Case vencimiento
                    Case totalpares
                    Case totalcajas
                    Case observaciones
                    Case viaembarque
                    Case nocaja
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Viaunom el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Viaunom: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Viaunom: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function

    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("VIAUNOM")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case codcliente
                        att = attCodcliente
                    Case calle
                        att = attCalle
                    Case colonia
                        att = attColonia
                    Case ciudad
                        att = attCiudad
                    Case estado
                        att = attEstado
                    Case cp
                        att = attCp
                    Case pedido
                        att = attPedido
                    Case ordencompra
                        att = attOrdencompra
                    Case proveedor
                        att = attProveedor
                    Case vendedor
                        att = attVendedor
                    Case condpago
                        att = attCondpago
                    Case vencimiento
                        att = attVencimiento
                    Case totalpares
                        att = attTotalpares
                    Case totalcajas
                        att = attTotalcajas
                    Case observaciones
                        att = attObservaciones
                    Case viaembarque
                        att = attViaembarque
                    Case nocaja
                        att = attNocaja
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml

        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Viaunom: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Viaunos
    Private _estructura As List(Of Addenda_BE) = Nothing

    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property

    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private vendidopor As String = "VENDIDOPOR"
    Private comentarios As String = "COMENTARIOS"

    ''' <summary>
    ''' Variables para el nombre de los atributos en el xml
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attVendidopor = "Vendidopor"
    Private attComentarios = "Comentarios"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum
    ''' <summary>
    ''' Funcion principal la cual genera el nodo Addenda
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Viaunos: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica del TXT de la addenda para SERVICIO
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error o  
    ''' que la estructura sea incorrecta</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case vendidopor
                    Case comentarios
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Viaunos el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Viaunos: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Viaunos: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function

    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("VIAUNOS")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case vendidopor
                        att = attVendidopor
                    Case comentarios
                        att = attComentarios
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml

        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Viaunos: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Italiana
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private comentarios As String = "COMENTARIOS"
    Private consigna As String = "CONSIGNA"
    Private ieps As String = "IEPS"
    Private msub As String = "MSUB"
    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attComentarios = "Comentarios"
    Private attConsigna = "Consigna"
    Private attIeps = "Ieps"
    Private attMsub = "Msub"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Italiana: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case comentarios
                    Case consigna
                    Case ieps
                    Case msub
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Italiana el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Italiana: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Italiana: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Italiana")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1

        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1

            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case comentarios
                        att = attComentarios
                    Case consigna
                        att = attConsigna
                    Case ieps
                        att = attIeps
                    Case msub
                        att = attMsub
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Italiana: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Tapia
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private nocliente As String = "NOCLIENTE"
    Private vendedor As String = "VENDEDOR"
    Private peso As String = "PESO"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attNoCliente = "NoCliente"
    Private attVendedor = "Vendedor"
    Private attPeso = "Peso"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Tapia: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case nocliente
                    Case vendedor
                    Case peso
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Tapia el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Tapia: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Tapia: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Tapia")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case nocliente
                        att = attNoCliente
                    Case vendedor
                        att = attVendedor
                    Case peso
                        att = attPeso
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Tapia: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Automover
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private empresa As String = "EMPRESA"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attEmpresa = "Empresa"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Automover: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case empresa
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Automover el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Automover: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Automover: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Automover")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case empresa
                        att = attEmpresa
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Automover: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Cfdi
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private observaciones As String = "OBSERVACIONES"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attObservaciones = "Observaciones"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Cfdi: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case observaciones
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Cfdi el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Cfdi: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Cfdi: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Cfdi")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case observaciones
                        att = attObservaciones
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Cfdi: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Dis
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private Oc As String = "OC"
    Private Control As String = "CONTROL"
    Private Pedido As String = "PEDIDO"
    Private Datoop1 As String = "DATOOP1"
    Private Datoop2 As String = "DATOOP2"
    Private Datoop3 As String = "DATOOP3"
    Private Calle As String = "CALLE"
    Private Next_ As String = "NEXT"
    Private Nint As String = "NINT"
    Private Colonia As String = "COLONIA"
    Private Localidad As String = "LOCALIDAD"
    Private Municipio As String = "MUNICIPIO"
    Private Cp As String = "CP"
    Private Estado As String = "ESTADO"
    Private Pais As String = "PAIS"
    Private Responsable As String = "RESPONSABLE"
    Private Puesto As String = "PUESTO"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attOc = "Oc"
    Private attControl = "Control"
    Private attPedido = "Pedido"
    Private attDatoop1 = "Datoop1"
    Private attDatoop2 = "Datoop2"
    Private attDatoop3 = "Datoop3"
    Private attCalle = "Calle"
    Private attNext = "Next"
    Private attNint = "Nint"
    Private attColonia = "Colonia"
    Private attLocalidad = "Localidad"
    Private attMunicipio = "Municipio"
    Private attCp = "Cp"
    Private attEstado = "Estado"
    Private attPais = "Pais"
    Private attResponsable = "Responsable"
    Private attPuesto = "Puesto"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Dis: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case Oc
                    Case Control
                    Case Pedido
                    Case Datoop1
                    Case Datoop2
                    Case Datoop3
                    Case Calle
                    Case Next_
                    Case Nint
                    Case Colonia
                    Case Localidad
                    Case Municipio
                    Case Cp
                    Case Estado
                    Case Pais
                    Case Responsable
                    Case Puesto
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Dis el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Dis: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Dis: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try
    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Dis")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case Oc
                        att = attOc
                    Case Control
                        att = attControl
                    Case Pedido
                        att = attPedido
                    Case Datoop1
                        att = attDatoop1
                    Case Datoop2
                        att = attDatoop2
                    Case Datoop3
                        att = attDatoop3
                    Case Calle
                        att = attCalle
                    Case Next_
                        att = attNext
                    Case Nint
                        att = attNint
                    Case Colonia
                        att = Colonia
                    Case Localidad
                        att = attLocalidad
                    Case Municipio
                        att = attMunicipio
                    Case Cp
                        att = attCp
                    Case Estado
                        att = attEstado
                    Case Pais
                        att = attPais
                    Case Responsable
                        att = attResponsable
                    Case Puesto
                        att = attPuesto
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Dis: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Cptal
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private recogeraen As String = "RECOGERAEN"
    Private destino As String = "DESTINO"
    Private destinatario As String = "DESTINATARIO"
    Private rfcdes As String = "RFCDES"
    Private domiciliodes As String = "DOMICILIODES"
    Private entregaraen As String = "ENTREGARAEN"
    Private valoruni As String = "VALORUNI"
    Private valordec As String = "VALORDEC"
    Private reembarco As String = "REEMBARCO"
    Private condujo As String = "CONDUJO"
    Private de1 As String = "DE1"
    Private reembarcarse As String = "REEMBARCARSE"
    Private conducira As String = "CONDUCIRA"
    Private de2 As String = "DE2"
    Private documento As String = "DOCUMENTO"
    Private observaciones As String = "OBSERVACIONES"
    Private flete As String = "FLETE"
    Private cargoseg As String = "CARGOSEG"
    Private maniobras As String = "MANIOBRAS"
    Private alt As String = "ALT"
    Private otros As String = "OTROS"
    Private facturaorigen As String = "FACTURAORIGEN"
    Private origen As String = "ORIGEN"
    Private subtotal2 As String = "SUBTOTAL2"
    Private peso As String = "PESO"
    Private m3 As String = "M3"
    Private pesoest As String = "PESOEST"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attrecogeraen As String = "Recogeraen"
    Private attdestino As String = "Destino"
    Private attdestinatario As String = "Destinatario"
    Private attrfcdes As String = "Rfcdes"
    Private attdomiciliodes As String = "Domiciliodes"
    Private attentregaraen As String = "Entregaraen"
    Private attvaloruni As String = "Valoruni"
    Private attvalordec As String = "Valordec"
    Private attreembarco As String = "Reembarco"
    Private attcondujo As String = "Condujo"
    Private attde1 As String = "De1"
    Private attreembarcarse As String = "Reembarcarse"
    Private attconducira As String = "Conducira"
    Private attde2 As String = "De2"
    Private attdocumento As String = "Documento"
    Private attobservaciones As String = "Observaciones"
    Private attflete As String = "Flete"
    Private attcargoseg As String = "Cargoseg"
    Private attmaniobras As String = "Maniobras"
    Private attalt As String = "Alt"
    Private attotros As String = "Otros"
    Private attfacturaorigen As String = "Facturaorigen"
    Private attorigen As String = "Origen"
    Private attsubtotal2 As String = "Subtotal2"
    Private attpeso As String = "Peso"
    Private attm3 As String = "M3"
    Private attpesoest As String = "Pesoest"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Cptal: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case recogeraen
                    Case destino
                    Case destinatario
                    Case rfcdes
                    Case domiciliodes
                    Case entregaraen
                    Case valoruni
                    Case valordec
                    Case reembarco
                    Case condujo
                    Case de1
                    Case reembarcarse
                    Case conducira
                    Case de2
                    Case documento
                    Case observaciones
                    Case flete
                    Case cargoseg
                    Case maniobras
                    Case alt
                    Case otros
                    Case facturaorigen
                    Case origen
                    Case subtotal2
                    Case peso
                    Case m3
                    Case pesoest
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Cptal el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Cptal: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Cptal: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Cptal")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case recogeraen
                        att = attrecogeraen
                    Case destino
                        att = attdestino
                    Case destinatario
                        att = attdestinatario
                    Case rfcdes
                        att = attrfcdes
                    Case domiciliodes
                        att = attdomiciliodes
                    Case entregaraen
                        att = attentregaraen
                    Case valoruni
                        att = attvaloruni
                    Case valordec
                        att = attvalordec
                    Case reembarco
                        att = attreembarco
                    Case condujo
                        att = attcondujo
                    Case de1
                        att = attde1
                    Case reembarcarse
                        att = attreembarcarse
                    Case conducira
                        att = attconducira
                    Case de2
                        att = attde2
                    Case documento
                        att = attdocumento
                    Case observaciones
                        att = attobservaciones
                    Case flete
                        att = attflete
                    Case cargoseg
                        att = attcargoseg
                    Case maniobras
                        att = attmaniobras
                    Case alt
                        att = attalt
                    Case otros
                        att = attotros
                    Case facturaorigen
                        att = attfacturaorigen
                    Case origen
                        att = attorigen
                    Case subtotal2
                        att = attsubtotal2
                    Case peso
                        att = attpeso
                    Case m3
                        att = attm3
                    Case pesoest
                        att = attpesoest
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml

        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Cptal: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Larochelle
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private oc As String = "OC"
    Private pedidos As String = "PEDIDOS"
    Private remisiones As String = "REMISIONES"
    Private observaciones As String = "OBSERVACIONES"
    Private noticias As String = "NOTICIAS"
    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attOc = "Oc"
    Private attPedidos = "Pedidos"
    Private attRemisiones = "Remisiones"
    Private attObservaciones = "Observaciones"
    Private attNoticias = "Noticias"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Larochelle: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case oc
                    Case pedidos
                    Case remisiones
                    Case observaciones
                    Case noticias
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Larochelle el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Larochelle: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Larochelle: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Larochelle")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case oc
                        att = attOc
                    Case pedidos
                        att = attPedidos
                    Case remisiones
                        att = attRemisiones
                    Case observaciones
                        att = attObservaciones
                    Case noticias
                        att = attNoticias
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Larochelle: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Stakujut
    Private _estructura As List(Of Addenda_BE) = Nothing

    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property

    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private ventas As String = "VENTAS"
    ''' <summary>
    ''' Variables para el nombre de los atributos en el xml
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attVentas = "Ventas"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum
    ''' <summary>
    ''' Funcion principal la cual genera el nodo Addenda
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Stakujut: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica del TXT de la addenda para SERVICIO
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error o  
    ''' que la estructura sea incorrecta</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case ventas
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Stakujut el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Stakujut: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Stakujut: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Stakujut")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case ventas
                        att = attVentas
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Stakujut: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Snp
    Private _estructura As List(Of Addenda_BE) = Nothing

    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property

    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private embarcacion As String = "EMBARCACION"
    Private peso As String = "PESO"
    Private observaciones As String = "OBSERVACIONES"
    ''' <summary>
    ''' Variables para el nombre de los atributos en el xml
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attEmbarcacion = "Embarcacion"
    Private attPeso = "Peso"
    Private attObservaciones = "Observaciones"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum
    ''' <summary>
    ''' Funcion principal la cual genera el nodo Addenda
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Snp: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica del TXT de la addenda para SERVICIO
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error o  
    ''' que la estructura sea incorrecta</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case embarcacion
                    Case peso
                    Case observaciones
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Snp el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Snp: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Snp: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Snp")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case embarcacion
                        att = attEmbarcacion
                    Case peso
                        att = attPeso
                    Case observaciones
                        att = attObservaciones
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Snp: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Addesc
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>

    Private observaciones As String = "OBSERVACIONES"

    Private desc As String = "DESC"
    Private predesc As String = "PREDESC"
    Private precun As String = "PRECUN"
    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attobservaciones As String = "Observaciones"

    Private attdesc As String = "Desc"
    Private atpredesc As String = "Predesc"
    Private attprecun As String = "Precun"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Addesc: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case observaciones
                    Case desc
                    Case predesc
                    Case precun
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Addesc el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Addesc: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Addesc: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Addesc")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case observaciones
                        att = attobservaciones
                    Case desc
                        att = attdesc
                    Case predesc
                        att = atpredesc
                    Case precun
                        att = attprecun
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml

        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Addesc: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Teleno
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private observaciones As String = "OBSERVACIONES"
    Private impresora As String = "IMPRESORA"
    Private copias As String = "COPIAS"
    Private ordencompra As String = "ORDENCOMPRA"
    Private zona As String = "ZONA"
    Private codcliente As String = "CODCLIENTE"
    Private numunidades As String = "NUMUNIDADES"
    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attObservaciones = "Observaciones"
    Private attImpresora = "Impresora"
    Private attCopias = "Copias"
    Private attOrdenCompra = "OrdenCompra"
    Private attZona = "Zona"
    Private attCodCliente = "CodCliente"
    Private attNumUnidades = "NumUnidades"



    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Teleno: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case observaciones
                    Case impresora
                    Case copias
                    Case ordencompra
                    Case zona
                    Case codcliente
                    Case numunidades
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Teleno el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Teleno: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Teleno: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Teleno")
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case observaciones
                        att = attObservaciones
                    Case impresora
                        att = attImpresora
                    Case copias
                        att = attCopias
                    Case ordencompra
                        att = attOrdenCompra
                    Case zona
                        att = attZona
                    Case codcliente
                        att = attCodCliente
                    Case numunidades
                        att = attNumUnidades
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Teleno: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Provsap
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private numerocliente As String = "NUMEROCLIENTE"
    Private numeroproveedor As String = "NUMEROPROVEEDOR"
    Private asesorventas As String = "ASESORVENTAS"
    Private diasrevision As String = "DIASREVISION"
    Private horario As String = "HORARIO"
    Private ordencompra As String = "ORDENCOMPRA"
    Private atenciona As String = "ATENCIONA"
    Private direccionentrega As String = "DIRECCIONENTREGA"
    Private observaciones As String = "OBSERVACIONES"
    Private addenda As String = "ADDENDA"
    Private numeropartida As String = "NUMEROPARTIDA"
    Private clavecliente As String = "CLAVECLIENTE"
    Private numeroremision As String = "NUMEROREMISION"
    Private slot As String = "SLOT"
    Private observacionespartida As String = "OBSERVACIONESPARTIDA"
    Private noparte As String = "NOPARTE"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attNumeroCliente = "NumeroCliente"
    Private attNumeroProveedor = "NumeroProveedor"
    Private attAsesorVentas = "AsesorVentas"
    Private attDiasRevision = "DiasRevision"
    Private attHorario = "Horario"
    Private attOrdenCompra = "OrdenCompra"
    Private attAtencionA = "AtencionA"
    Private attDireccionEntrega = "DireccionEntrega"
    Private attObservaciones = "Observaciones"
    Private attAddenda = "Addenda"
    Private attNumeroPartida = "NumeroPartida"
    Private attClaveCliente = "ClaveCliente"
    Private attNumeroRemision = "NumeroRemision"
    Private attSlot = "Slot"
    Private attObservacionesPartida = "ObservacionesPartida"
    Private attNoParte = "NoParte"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Provsap: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case numerocliente
                    Case numeroproveedor
                    Case asesorventas
                    Case diasrevision
                    Case horario
                    Case ordencompra
                    Case atenciona
                    Case direccionentrega
                    Case observaciones
                    Case addenda
                    Case numeropartida
                    Case clavecliente
                    Case numeroremision
                    Case slot
                    Case observacionespartida
                    Case noparte
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Provsap el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Provsap: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Provsap: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("AddendaProvSap")
        Dim elementoAddenda As XmlElement = xml.CreateElement("ProvSap")
        Dim elementoAddendaComercial As XmlElement = xml.CreateElement("AddendaComercial")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case numerocliente
                        att = attNumeroCliente
                    Case numeroproveedor
                        att = attNumeroProveedor
                    Case asesorventas
                        att = attAsesorVentas
                    Case diasrevision
                        att = attDiasRevision
                    Case horario
                        att = attHorario
                    Case ordencompra
                        att = attOrdenCompra
                    Case atenciona
                        att = attAtencionA
                    Case direccionentrega
                        att = attDireccionEntrega
                    Case observaciones
                        att = attObservaciones
                    Case addenda
                        att = attAddenda
                    Case numeropartida
                        att = attNumeroPartida
                    Case clavecliente
                        att = attClaveCliente
                    Case numeroremision
                        att = attNumeroRemision
                    Case slot
                        att = attSlot
                    Case observacionespartida
                        att = attObservacionesPartida
                    Case noparte
                        att = attNoParte
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    If (att = "Addenda") Then
                        elementoAddendaComercial.InnerXml = add.Valor
                    Else
                        elementoAddenda.Attributes.Append(xml.CreateAttribute(att))
                        elementoAddenda.Attributes(att).Value = add.Valor
                    End If
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elementoAddenda.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elementoAddenda.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elementoAddenda.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If

            Next
            elementoAddenda.AppendChild(partida)
            If (elementoAddendaComercial.ChildNodes(0) IsNot Nothing) Then
                If (elementoAddendaComercial.ChildNodes(0).ChildNodes(0) IsNot Nothing) Then
                    elemento.AppendChild(elementoAddendaComercial.ChildNodes(0).ChildNodes(0))
                End If
            End If
            elemento.AppendChild(elementoAddenda)
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Provsap: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Ggm
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private folioerp As String = "FOLIOERP"
    Private numclientepemex As String = "NUMCLIENTEPEMEX"
    Private numcliente As String = "NUMCLIENTE"
    Private observaciones As String = "OBSERVACIONES"
    Private impresora As String = "IMPRESORA"
    Private copias As String = "COPIAS"
    Private rutaxml As String = "RUTAXML"
    Private rutapdf As String = "RUTAPDF"
    Private rutatxt As String = "RUTATXT"
    Private desde As String = "DESDE"
    Private hasta As String = "HASTA"
    Private leyenda As String = "LEYENDA"
    Private fcs As String = "FCS"
    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attFolioErp = "FolioErp"
    Private attNumClientePemex = "NumClientePemex"
    Private attNumCliente = "NumCliente"
    Private attObservaciones = "Observaciones"
    Private attImpresora = "Impresora"
    Private attCopias = "Copias"
    Private attRutaXml = "RutaXml"
    Private attRutaPdf = "RutaPdf"
    Private attRutaTxt = "RutaTxt"
    Private attDesde = "Desde"
    Private attHasta = "Hasta"
    Private attLeyenda = "Leyenda"
    Private attFcs = "Fcs"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Ggm: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case folioerp
                    Case numclientepemex
                    Case numcliente
                    Case observaciones
                    Case impresora
                    Case copias
                    Case rutaxml
                    Case rutapdf
                    Case rutatxt
                    Case desde
                    Case hasta
                    Case leyenda
                    Case fcs
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Ggm el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Ggm: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Ggm: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Ggm")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case folioerp
                        att = attFolioErp
                    Case numclientepemex
                        att = attNumClientePemex
                    Case numcliente
                        att = attNumCliente
                    Case observaciones
                        att = attObservaciones
                    Case impresora
                        att = attImpresora
                    Case impresora
                        att = attImpresora
                    Case copias
                        att = attCopias
                    Case rutaxml
                        att = attRutaXml
                    Case rutapdf
                        att = attRutaPdf
                    Case rutatxt
                        att = attRutaTxt
                    Case desde
                        att = attDesde
                    Case hasta
                        att = attHasta
                    Case leyenda
                        att = attLeyenda
                    Case fcs
                        att = attFcs
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Ggm: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Sih
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private propina As String = "PROPINA"
    Private tamaño As String = "TAMAÑO"
    Private campo1 As String = "CAMPO1"
    Private campo2 As String = "CAMPO2"
    Private campo3 As String = "CAMPO3"
    Private campo4 As String = "CAMPO4"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attPropina = "Propina"
    Private attTamaño = "Tamaño"
    Private attCampo1 = "Campo1"
    Private attCampo2 = "Campo2"
    Private attCampo3 = "Campo3"
    Private attCampo4 = "Campo4"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Sih: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case propina
                    Case tamaño
                    Case campo1
                    Case campo2
                    Case campo3
                    Case campo4
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Sih el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Sih: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Sih: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Sih")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case propina
                        att = attPropina
                    Case tamaño
                        att = attTamaño
                    Case campo1
                        att = attCampo1
                    Case campo2
                        att = attCampo2
                    Case campo3
                        att = attCampo3
                    Case campo4
                        att = attCampo4
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Sih: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Mocambo
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private propina As String = "PROPINA"
    Private folio As String = "FOLIO"
    Private empresa As String = "EMPRESA"
    Private observaciones As String = "OBSERVACIONES"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attPropina = "Propina"
    Private attFolio = "Folio"
    Private attEmpresa = "Empresa"
    Private attObservaciones = "Observaciones"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Mocambo: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case propina
                    Case folio
                    Case empresa
                    Case observaciones
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Mocambo el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Mocambo: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Mocambo: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Mocambo")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case propina
                        att = attPropina
                    Case folio
                        att = attFolio
                    Case empresa
                        att = attEmpresa
                    Case observaciones
                        att = attObservaciones
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Mocambo: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Identco
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private pedido As String = "PEDIDO"
    Private telefonoreceptor As String = "TELEFONORECEPTOR"
    Private embarcara As String = "EMBARCARA"
    Private noorden As String = "NOORDEN"
    Private fechaorden As String = "FECHAORDEN"
    Private repvtas As String = "REPVTAS"
    Private loc As String = "LOC"
    Private observaciones As String = "OBSERVACIONES"
    Private importante As String = "IMPORTANTE"
    Private observacionesp As String = "OBSERVACIONESP"


    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attPedido = "Pedido"
    Private attTelefonoReceptor = "TelefonoReceptor"
    Private attEmbarcarA = "EmbarcarA"
    Private attNoOrden = "NoOrden"
    Private attFechaOrden = "FechaOrden"
    Private attRepVtas = "RepVtas"
    Private attLoc = "Loc"
    Private attObservaciones = "Observaciones"
    Private attImportante = "Importante"
    Private attObservacionesP = "ObservacionesP"



    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Identco: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case pedido
                    Case telefonoreceptor
                    Case embarcara
                    Case noorden
                    Case fechaorden
                    Case repvtas
                    Case loc
                    Case observaciones
                    Case importante
                    Case observacionesp
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Identco el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Identco: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Identco: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Identco")
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case pedido
                        att = attPedido
                    Case telefonoreceptor
                        att = attTelefonoReceptor
                    Case embarcara
                        att = attEmbarcarA
                    Case noorden
                        att = attNoOrden
                    Case fechaorden
                        att = attFechaOrden
                    Case repvtas
                        att = attRepVtas
                    Case loc
                        att = attLoc
                    Case observaciones
                        att = attObservaciones
                    Case importante
                        att = attImportante
                    Case observacionesp
                        att = attObservacionesP
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Identco: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Angeles
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private fianza As String = "FIANZA"
    Private contrato As String = "CONTRATO"
    Private proveedor As String = "PROVEEDOR"
    Private observaciond As String = "OBSERVACIOND"

    Private observacionp As String = "OBSERVACIONP"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attfianza As String = "Fianza"
    Private attcontrato As String = "Contrato"
    Private attproveedor As String = "Proveedor"
    Private attobservaciond As String = "ObservacionD"

    Private attobservacionp As String = "ObservacionP"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Angeles: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case fianza
                    Case contrato
                    Case proveedor
                    Case observaciond
                    Case observacionp
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Angeles el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Angeles: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Angeles: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Angeles")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case fianza
                        att = attfianza
                    Case contrato
                        att = attcontrato
                    Case proveedor
                        att = attproveedor
                    Case observaciond
                        att = attobservaciond
                    Case observacionp
                        att = attobservacionp
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml

        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Angeles: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Autoluca
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private UnidImp As String = "UNIDIMP"
    Private R As String = "R"
    Private Pedimento As String = "PEDIMENTO"
    Private FechaPed As String = "FECHAPED"
    Private Aduana As String = "ADUANA"
    Private Vehiculo As String = "VEHICULO"
    Private Inventario As String = "INVENTARIO"
    Private IgnitionKey As String = "IGNITIONKEY"
    Private SmartKey As String = "SMARTKEY"
    Private Motor As String = "MOTOR"
    Private Producto As String = "PRODUCTO"
    Private Modelo As String = "MODELO"
    Private Serie As String = "SERIE"
    Private Capacidad As String = "CAPACIDAD"
    Private Color As String = "COLOR"
    Private VehiculoMarca As String = "VEHICULOMARCA"
    Private Observaciones As String = "OBSERVACIONES"
    Private SerieLetra As String = "SERIELETRA"
    Private ClaveVehicular As String = "CLAVEVEHICULAR"
    Private Firma1 As String = "FIRMA1"
    Private Firma2 As String = "FIRMA2"
    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attUnidImp As String = "UnidImp"
    Private attR As String = "R"
    Private attPedimento As String = "Pedimento"
    Private attFechaPed As String = "FechaPed"
    Private attAduana As String = "Aduana"
    Private attVehiculo As String = "Vehiculo"
    Private attInventario As String = "Inventario"
    Private attIgnitionKey As String = "IgnitionKey"
    Private attSmartKey As String = "SmartKey"
    Private attMotor As String = "Motor"
    Private attProducto As String = "Producto"
    Private attModelo As String = "Modelo"
    Private attSerie As String = "Serie"
    Private attCapacidad As String = "Capacidad"
    Private attColor As String = "Color"
    Private attVehiculoMarca As String = "VehiculoMarca"
    Private attObservaciones As String = "Observaciones"
    Private attSerieLetra As String = "SerieLetra"
    Private attClaveVechicular As String = "ClaveVehicular"
    Private attFirma1 As String = "Firma1"
    Private attFirma2 As String = "Firma2"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Autoluca: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case UnidImp
                    Case R
                    Case Pedimento
                    Case FechaPed
                    Case Aduana
                    Case Vehiculo
                    Case Inventario
                    Case IgnitionKey
                    Case SmartKey
                    Case Motor
                    Case Producto
                    Case Modelo
                    Case Serie
                    Case Capacidad
                    Case Color
                    Case VehiculoMarca
                    Case Observaciones
                    Case SerieLetra
                    Case ClaveVehicular
                    Case Firma1
                    Case Firma2
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Autoluca el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Autoluca: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Autoluca: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Autoluca")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case UnidImp
                        att = attUnidImp
                    Case R
                        att = attR
                    Case Pedimento
                        att = attPedimento
                    Case FechaPed
                        att = attFechaPed
                    Case Aduana
                        att = attAduana
                    Case Vehiculo
                        att = attVehiculo
                    Case Inventario
                        att = attInventario
                    Case IgnitionKey
                        att = attIgnitionKey
                    Case SmartKey
                        att = attSmartKey
                    Case Motor
                        att = attMotor
                    Case Producto
                        att = attProducto
                    Case Modelo
                        att = attModelo
                    Case Serie
                        att = attSerie
                    Case Capacidad
                        att = attCapacidad
                    Case Color
                        att = attColor
                    Case VehiculoMarca
                        att = attVehiculoMarca
                    Case Observaciones
                        att = attObservaciones
                    Case SerieLetra
                        att = attSerieLetra
                    Case ClaveVehicular
                        att = attClaveVechicular
                    Case Firma1
                        att = attFirma1
                    Case Firma2
                        att = attFirma2
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Autoluca: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Suministros
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private observaciones As String = "OBSERVACIONES"
    Private piezas As String = "PIEZAS"
    Private nocliente As String = "NOCLIENTE"
    Private noremision As String = "NOREMISION"
    Private agente As String = "AGENTE"
    Private viaembarque As String = "VIAEMBARQUE"
    Private diapagare As String = "DIAPAGARE"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attObservaciones = "Observaciones"
    Private attPiezas = "Piezas"
    Private attNoCliente = "NoCliente"
    Private attNoRemision = "NoRemision"
    Private attAgente = "Agente"
    Private attViaEmbarque = "ViaEmbarque"
    Private attDiaPagare = "DiaPagare"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Suministros: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case observaciones
                    Case piezas
                    Case nocliente
                    Case noremision
                    Case agente
                    Case viaembarque
                    Case diapagare
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Suministros el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Suministros: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Suministros: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Suministros")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case observaciones
                        att = attObservaciones
                    Case piezas
                        att = attPiezas
                    Case nocliente
                        att = attNoCliente
                    Case noremision
                        att = attNoRemision
                    Case agente
                        att = attAgente
                    Case viaembarque
                        att = attViaEmbarque
                    Case diapagare
                        att = attDiaPagare
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Suministros: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Autolucadis
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private tipounidad As String = "TIPOUNIDAD"
    Private modelo As String = "MODELO"
    Private placas As String = "PLACAS"
    Private serievehiculo As String = "SERIEVEHICULO"
    Private noreporte As String = "NOREPORTE"
    Private nosiniestro As String = "NOSINIESTRO"
    Private nopoliza As String = "NOPOLIZA"
    Private inc As String = "INC"
    Private tipocliente As String = "TIPOCLIENTE"
    Private referencia As String = "REFERENCIA"
    Private nocliente As String = "NOCLIENTE"
    Private kilometraje As String = "KILOMETRAJE"
    Private autorizacion As String = "AUTORIZACION"
    Private noeconomico As String = "NOECONOMICO"
    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attTipoUnidad = "TipoUnidad"
    Private attModelo = "Modelo"
    Private attPlacas = "Placas"
    Private attSerieVehiculo = "SerieVehiculo"
    Private attNoReporte = "NoReporte"
    Private attNoSiniestro = "NoSiniestro"
    Private attNoPoliza = "NoPoliza"
    Private attInc = "Inc"
    Private attTipoCliente = "TipoCliente"
    Private attReferencia = "Referencia"
    Private attNoCliente = "NoCliente"
    Private attKilometraje = "Kilometraje"
    Private attAutorizacion = "Autorizacion"
    Private attNoEconomico = "NoEconomico"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Autolucadis: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case tipounidad
                    Case modelo
                    Case placas
                    Case serievehiculo
                    Case noreporte
                    Case nosiniestro
                    Case nopoliza
                    Case inc
                    Case tipocliente
                    Case referencia
                    Case nocliente
                    Case kilometraje
                    Case autorizacion
                    Case noeconomico
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Autolucadis el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Autolucadis: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Autolucadis: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("AutolucaDis")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case tipounidad
                        att = attTipoUnidad
                    Case modelo
                        att = attModelo
                    Case placas
                        att = attPlacas
                    Case serievehiculo
                        att = attSerieVehiculo
                    Case noreporte
                        att = attNoReporte
                    Case nosiniestro
                        att = attNoSiniestro
                    Case nopoliza
                        att = attNoPoliza
                    Case inc
                        att = attInc
                    Case tipocliente
                        att = attTipoCliente
                    Case referencia
                        att = attReferencia
                    Case nocliente
                        att = attNoCliente
                    Case kilometraje
                        att = attKilometraje
                    Case autorizacion
                        att = attAutorizacion
                    Case noeconomico
                        att = attNoEconomico
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Autolucadis: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Fitonat
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private codigo As String = "CODIGO"
    Private codigocliente As String = "CODIGOCLIENTE"
    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attCodigo = "Codigo"
    Private attCodigoCliente = "CodigoCliente"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Fitonat: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case codigo
                    Case codigocliente
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Fitonat el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Fitonat: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Fitonat: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Fitonat")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case codigo
                        att = attCodigo
                    Case codigocliente
                        att = attCodigoCliente
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Fitonat: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Nuevohotel
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private propina As String = "PROPINA"
    Private folio As String = "FOLIO"
    Private empresa As String = "EMPRESA"
    Private nombrehuesped As String = "NOMBRE DEL HUESPED"
    Private nohabitacion As String = "NUMERO DE HABITACION"
    Private noconfirmacion As String = "NUMERO DE CONFIRMACION"
    Private fechaentrada As String = "FECHA DE ENTRADA"
    Private fechasalida As String = "FECHA DE SALIDA"
    Private observaciones As String = "OBSERVACIONES"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attPropina = "Propina"
    Private attFolio = "Folio"
    Private attEmpresa = "Empresa"
    Private attNombreHuesped = "NombreHuesped"
    Private attNoHabitacion = "NumeroHabitacion"
    Private attNoConfirmacion = "NumeroConfirmacion"
    Private attFechaEntrada = "FechaEntrada"
    Private attFechaSalida = "FechaSalida"
    Private attObservaciones = "Observaciones"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Nuevohotel: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case propina
                    Case folio
                    Case empresa
                    Case nombrehuesped
                    Case nohabitacion
                    Case noconfirmacion
                    Case fechaentrada
                    Case fechasalida
                    Case observaciones
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda NuevoHotel el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda NuevoHotel: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda NuevoHotel: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("NuevoHotel")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case propina
                        att = attPropina
                    Case folio
                        att = attFolio
                    Case empresa
                        att = attEmpresa
                    Case nombrehuesped
                        att = attNombreHuesped
                    Case nohabitacion
                        att = attNoHabitacion
                    Case noconfirmacion
                        att = attNoConfirmacion
                    Case fechaentrada
                        att = attFechaEntrada
                    Case fechasalida
                        att = attFechaSalida
                    Case observaciones
                        att = attObservaciones
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda NuevoHotel: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class JYQ
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private ordencompra As String = "ORDENCOMPRA"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attOrdenCompra = "OrdenCompra"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda JyQ: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case ordencompra
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda JyQ el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda JyQ: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda JyQ: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Jyq")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case ordencompra
                        att = attOrdenCompra
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda JyQ: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Creadi
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private noremision As String = "NOREMISION"
    Private observaciones As String = "OBSERVACIONES"
    Private nopartida As String = "PARTIDA"
    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attnoremision As String = "NoRemision"
    Private attobservaciones As String = "Observaciones"
    Private attnopartida As String = "NoPartida"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Creadi: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case noremision
                    Case observaciones
                    Case nopartida
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Creadi el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Creadi: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Creadi: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Creadi")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1
        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case noremision
                        att = attnoremision
                    Case observaciones
                        att = attobservaciones
                    Case nopartida
                        att = attnopartida
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml

        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Creadi: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Cauda
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private observaciones As String = "OBSERVACIONES"
    Private piezas As String = "PIEZAS"
    Private nocliente As String = "NOCLIENTE"
    Private noremision As String = "NOREMISION"
    Private agente As String = "AGENTE"
    Private viaembarque As String = "VIAEMBARQUE"
    Private diapagare As String = "DIAPAGARE"
    Private consignatario As String = "CONSIGNATARIO"
    Private clave As String = "CLAVE"
    Private direccion1 As String = "DIRECCION1"
    Private direccion2 As String = "DIRECCION2"
    Private direccion3 As String = "DIRECCION3"
    Private direccion4 As String = "DIRECCION4"
    Private telefonos As String = "TELEFONOS"
    Private contacto As String = "CONTACTO"
    Private nocontrato As String = "NO.CONTRATO"
    Private ctaclabe As String = "CTA.CLABE"
    Private proveedor As String = "PROVEEDOR"
    Private cliente As String = "CLIENTE"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attobservaciones = "Observaciones"
    Private attpiezas = "Piezas"
    Private attnocliente = "NoCliente"
    Private attnoremision = "NoRemision"
    Private attagente = "Agente"
    Private attviaembarque = "ViaEmbarque"
    Private attdiapagare = "DiaPagare"
    Private attconsignatario = "Consignatario"
    Private attclave = "Clave"
    Private attdireccion1 = "Direccion1"
    Private attdireccion2 = "Direccion2"
    Private attdireccion3 = "Direccion3"
    Private attdireccion4 = "Direccion4"
    Private atttelefonos = "Telefonos"
    Private attcontacto = "Contacto"
    Private attnocontrato = "NoContrato"
    Private attctaclabe = "CtaClabe"
    Private attproveedor = "Proveedor"
    Private attcliente = "Cliente"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Cauda: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case observaciones
                    Case piezas
                    Case nocliente
                    Case noremision
                    Case agente
                    Case viaembarque
                    Case diapagare
                    Case consignatario
                    Case clave
                    Case direccion1
                    Case direccion2
                    Case direccion3
                    Case direccion4
                    Case telefonos
                    Case contacto
                    Case nocontrato
                    Case ctaclabe
                    Case proveedor
                    Case cliente
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Cauda el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Cauda: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Cauda: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Cauda")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case observaciones
                        att = attobservaciones
                    Case piezas
                        att = attpiezas
                    Case nocliente
                        att = attnocliente
                    Case noremision
                        att = attnoremision
                    Case agente
                        att = attagente
                    Case viaembarque
                        att = attviaembarque
                    Case diapagare
                        att = attdiapagare
                    Case consignatario
                        att = attconsignatario
                    Case clave
                        att = attclave
                    Case direccion1
                        att = attdireccion1
                    Case direccion2
                        att = attdireccion2
                    Case direccion3
                        att = attdireccion3
                    Case direccion4
                        att = attdireccion4
                    Case telefonos
                        att = atttelefonos
                    Case contacto
                        att = attcontacto
                    Case nocontrato
                        att = attnocontrato
                    Case ctaclabe
                        att = attctaclabe
                    Case proveedor
                        att = attproveedor
                    Case cliente
                        att = attcliente
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Cauda: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class PowerStar
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private entrega As String = "ENTREGA"
    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attEntrega = "Entrega"

    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda PowerStar: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para POWERSTAR
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case entrega
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda PowerStar el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda PowerStar: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda PowerStar: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("PowerStar")
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        Dim contadorpartida As Integer = 1

        Try
            Dim partida As XmlElement = xml.CreateElement("PARTIDA")
            partida.Attributes.Append(xml.CreateAttribute("Partida"))
            partida.Attributes("Partida").Value = 1

            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case entrega
                        att = attEntrega
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    If (partida.Attributes("Partida").Value = "1") Then
                        If (elemento.SelectSingleNode("PARTIDA") Is Nothing) Then
                            elemento.AppendChild(partida)
                        End If
                    End If
                    If (contadorpartida < add.Partida) Then
                        elemento.AppendChild(partida)
                        partida = xml.CreateElement("PARTIDA")
                        partida.Attributes.Append(xml.CreateAttribute("Partida"))
                        partida.Attributes("Partida").Value = add.Partida
                        contadorpartida = contadorpartida + 1
                    End If
                    partida.Attributes.Append(xml.CreateAttribute(att))
                    partida.Attributes(att).Value = add.Valor
                End If
            Next
            elemento.AppendChild(partida)
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda PowerStar: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class

Partial Public Class Lantana
    Private _estructura As List(Of Addenda_BE) = Nothing
    Public Property Estructura() As List(Of Addenda_BE)
        Get
            Return _estructura
        End Get
        Set(ByVal value As List(Of Addenda_BE))
            _estructura = value
        End Set
    End Property
    ''' <summary>
    ''' Atributos de estructura, es la forma en como deben venir la informacion
    ''' De lo contrario es informacion errónea
    ''' </summary>
    ''' <remarks></remarks>
    Private FondoGarantia As String = "FONDOGARANTIA"

    ''' <summary>
    ''' Variables para el nombre de los atributos
    ''' </summary>
    ''' <remarks></remarks>
    ''' 
    Private attFondoGarantia = "FondoGarantia"


    Private Enum nivel
        numero = 1
        numero2 = 2
    End Enum

    Public Function generaAddenda(ByRef Resp As List(Of RespuestaPremium)) As String
        Dim xml As XmlDocument = New XmlDocument()
        Try
            If (validaEstructura(Resp)) Then
                xml = creaXML(Resp)
                Return xml.InnerXml
            Else
                Return ""
            End If
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Error al generar Addenda Lantana: " + ex.Message, Resp)
            Return ""
        End Try
    End Function
    ''' <summary>
    ''' Función que valida la estructura especifica de la addenda para ZARP
    ''' </summary>
    ''' <returns>True en caso de tener una respuesta correcta, </returns>
    ''' <exception cref="Exception ">Excepcion en caso de tener un error</exception>
    ''' <remarks></remarks>
    Private Function validaEstructura(ByRef Resp As List(Of RespuestaPremium)) As Boolean
        Dim respuesta As Boolean = True
        Try
            For Each add As Addenda_BE In _estructura
                Select Case add.Atributo 'Validamos que la estructura corresponda con la especificada en el documento
                    Case FondoGarantia
                    Case Else
                        ValidaCFDi.AgregaRespuesta("03", 0, "Error al validar estructura Addenda Lantana el valor del atributo, no cumple con las características", Resp)
                End Select
                If Not (add.Nivel = nivel.numero Or add.Nivel = nivel.numero2) Then ' Validamos nivel 1 o 2
                    ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Lantana: El nivel del layout no corresponde (1 ó 2)", Resp)
                End If
            Next
            Return respuesta
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Addenda Lantana: Error en la validación de estructura: " + ex.Message, Resp)
            Return False
        End Try

    End Function
    Private Function creaXML(ByRef Resp As List(Of RespuestaPremium)) As XmlDocument
        Dim xml As XmlDocument = New XmlDocument()
        Dim elemento As XmlElement = xml.CreateElement("Lantana")
        Try
            For Each add As Addenda_BE In _estructura
                Dim att As String = ""
                Select Case add.Atributo 'Seleccionamos que atributo es el que se va a ingresar
                    Case FondoGarantia
                        att = attFondoGarantia
                End Select

                If (add.Nivel = nivel.numero) Then 'Verificamos si es nivel partida o es en raiz
                    elemento.Attributes.Append(xml.CreateAttribute(att))
                    elemento.Attributes(att).Value = add.Valor
                Else
                    Dim elementDetalle As XmlElement = xml.CreateElement("Detalle")
                    elementDetalle.Attributes.Append(xml.CreateAttribute(att))
                    elementDetalle.Attributes(att).Value = add.Valor
                    elemento.AppendChild(elementDetalle)
                End If
            Next
            xml.AppendChild(elemento)
            Return xml
        Catch ex As Exception
            ValidaCFDi.AgregaRespuesta("03", 0, "Ocurrio un error al generar Addenda Lantana: " + ex.Message, Resp)
            Return Nothing
        End Try
    End Function
End Class
#End Region